/// <summary> /// FilterChanged event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cell_FilterChanged(object sender, ColumnHeaderCellEventArgs e) { if (Columns.Contains(e.Column)) { MenuStrip filterMenu = e.FilterMenu; DataGridViewColumn column = e.Column; _filterOrderList.Remove(column.Name); if (filterMenu.ActiveFilterType != MenuStrip.FilterType.None) { _filterOrderList.Add(column.Name); } FilterString = BuildFilterString(); if (_loadedFilter) { _loadedFilter = false; foreach (ColumnHeaderCell c in FilterableCells.Where(f => f.MenuStrip != filterMenu)) { c.SetLoadedMode(false); } } } }
/// <summary> /// FilterPopup event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cell_FilterPopup(object sender, ColumnHeaderCellEventArgs e) { if (Columns.Contains(e.Column)) { MenuStrip filterMenu = e.FilterMenu; DataGridViewColumn column = e.Column; System.Drawing.Rectangle rect = GetCellDisplayRectangle(column.Index, -1, true); if (_filteredColumns.Contains(column.Name)) { filterMenu.Show(this, rect.Left, rect.Bottom, false); } else { _filteredColumns.Add(column.Name); if (_filterOrderList.Count() > 0 && _filterOrderList.Last() == column.Name) { filterMenu.Show(this, rect.Left, rect.Bottom, true); } else { filterMenu.Show(this, rect.Left, rect.Bottom, MenuStrip.GetValuesForFilter(this, column.Name)); } } } }
/// <summary> /// SortChanged event /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void cell_SortChanged(object sender, ColumnHeaderCellEventArgs e) { if (Columns.Contains(e.Column)) { MenuStrip filterMenu = e.FilterMenu; DataGridViewColumn column = e.Column; _sortOrderList.Remove(column.Name); if (filterMenu.ActiveSortType != MenuStrip.SortType.None) { _sortOrderList.Add(column.Name); } SortString = BuildSortString(); } }