/// <summary> /// Handles the DragDrop event. Add a new grouping column following a drag drop from the grid /// </summary> /// <param name="sender">Source of the event.</param> /// <param name="e">A DragEventArgs that contains the event data.</param> private void KryptonOutlookGridGroupBox_DragDrop(object sender, DragEventArgs e) { string columnToMove = e.Data.GetData(typeof(string)) as string; string columnName; string columnText; SortOrder sortOrder; string[] res = columnToMove.Split('|'); columnName = res[0]; columnText = res[1]; sortOrder = SortOrder.Ascending; OutlookGridGroupBoxColumn colToAdd = new OutlookGridGroupBoxColumn(columnName, columnText, sortOrder); if (!String.IsNullOrEmpty(columnToMove) && !columnsList.Contains(colToAdd)) { columnsList.Add(colToAdd); try { //Warns the grid of a new grouping OnColumnGroupAdded(new OutlookGridColumnEventArgs(new OutlookGridColumn(columnName, null, null, SortOrder.None, true))); this.Invalidate(); } catch (Exception exc) { MessageBox.Show("Failed to group.\n\n Error:" + exc.Message, "Grid GroupBox", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }
/// <summary> /// Handles the UnGroup event /// </summary> /// <param name="sender">Source of the event.</param> /// <param name="e">A EventArgs that contains the event data.</param> private void OnUngroup(object sender, EventArgs e) { OutlookGridGroupBoxColumn col = columnsList[indexselected]; OnColumnGroupRemoved(new OutlookGridColumnEventArgs(new OutlookGridColumn(col.ColumnName, null, null, SortOrder.None, false))); columnsList.Remove(col); this.Invalidate(); }
/// <summary> /// Handles the SortDescending event /// </summary> /// <param name="sender">Source of the event.</param> /// <param name="e">A EventArgs that contains the event data.</param> private void OnSortDescending(object sender, EventArgs e) { OutlookGridGroupBoxColumn col = columnsList[indexselected]; col.SortOrder = SortOrder.Descending; OnColumnSortChanged(new OutlookGridColumnEventArgs(new OutlookGridColumn(col.ColumnName, null, null, SortOrder.Descending, false))); this.Invalidate(); }
/// <summary> /// DO NOT USE THIS FUNCTION YOURSELF, USE the corresponding function in OutlookGrid /// Update the grouping columns. /// </summary> /// <param name="list">The list of OutlookGridColumn</param> public void UpdateGroupingColumns(List <OutlookGridColumn> list) { columnsList.Clear(); OutlookGridGroupBoxColumn colToAdd; for (int i = 0; i < list.Count; i++) { if (list[i].IsGrouped) { colToAdd = new OutlookGridGroupBoxColumn(list[i].DataGridViewColumn.Name, list[i].DataGridViewColumn.HeaderText, list[i].SortDirection); columnsList.Add(colToAdd); } } this.Invalidate(); }
/// <summary> /// Show the context menu for column box /// </summary> private void ShowColumnBoxContextMenu() { if (_menuItems == null) { // Create individual items _menuSortAscending = new KryptonContextMenuItem("SORTASCENDING", new EventHandler(OnSortAscending)); _menuSortDescending = new KryptonContextMenuItem("SORTDESCENDING", new EventHandler(OnSortDescending)); _menuUnGroup = new KryptonContextMenuItem("UNGROUP", new EventHandler(OnUngroup)); _menuSeparator1 = new KryptonContextMenuSeparator(); _menuFullExpand = new KryptonContextMenuItem("FULLEXPAND", new EventHandler(OnFullExpand)); _menuFullCollapse = new KryptonContextMenuItem("FULLCOLLAPSE", new EventHandler(OnFullCollapse)); _menuSeparator2 = new KryptonContextMenuSeparator(); _menuClearGrouping = new KryptonContextMenuItem("CLEARGROUPING", new EventHandler(OnClearGrouping)); _menuHideGroupBox = new KryptonContextMenuItem("HIDEGROUPBOX", null, new EventHandler(OnHideGroupBox)); // Add items inside an items collection (apart from separator1 which is only added if required) _menuItems = new KryptonContextMenuItems(new KryptonContextMenuItemBase[] { _menuSortAscending, _menuSortDescending, _menuUnGroup, _menuSeparator1, _menuFullExpand, _menuFullCollapse, _menuSeparator2, _menuClearGrouping, _menuHideGroupBox }); } // Ensure we have a krypton context menu if not already present if (this.KCtxMenu == null) { KCtxMenu = new KryptonContextMenu(); } // Update the individual menu options OutlookGridGroupBoxColumn col = null; if (indexselected > -1) { col = columnsList[indexselected]; } _menuSortAscending.Visible = col != null; _menuSortDescending.Visible = col != null; _menuSortAscending.Checked = col != null && col.SortOrder == SortOrder.Ascending; _menuSortDescending.Checked = col != null && col.SortOrder == SortOrder.Descending; _menuUnGroup.Visible = col != null; _menuFullExpand.Enabled = columnsList.Count > 0; _menuFullCollapse.Enabled = columnsList.Count > 0; _menuClearGrouping.Enabled = columnsList.Count > 0; _menuSeparator1.Visible = (_menuSortAscending.Visible || _menuSortDescending.Visible || _menuUnGroup.Visible); if (!KCtxMenu.Items.Contains(_menuItems)) { KCtxMenu.Items.Add(_menuItems); } // Show the menu! KCtxMenu.Show(this); }