/// <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)) { ISortFilterMenu filterMenu = e.FilterMenu; DataGridViewColumn column = e.Column; _filterOrderList.Remove(column.Name); if (filterMenu.ActiveFilterType != 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)) { ISortFilterMenu filterMenu = e.FilterMenu; DataGridViewColumn column = e.Column; System.Drawing.Rectangle rect = GetCellDisplayRectangle(column.Index, -1, true); if (_filteredColumns.Contains(column.Name)) { filterMenu.Show(this, (this.RightToLeft == RightToLeft.Yes ? rect.Right : rect.Left), rect.Bottom, false); } else { _filteredColumns.Add(column.Name); if (_filterOrderList.Count() > 0 && _filterOrderList.Last() == column.Name) { filterMenu.Show(this, (this.RightToLeft == RightToLeft.Yes ? rect.Right : rect.Left), rect.Bottom, true); } else { IEnumerable <DataGridViewCell> valuesForFilter = from DataGridViewRow row in this.Rows select row.Cells[column.Name]; filterMenu.Show(this, (this.RightToLeft == RightToLeft.Yes ? rect.Right : rect.Left), rect.Bottom, valuesForFilter); } } } }
/// <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)) { ISortFilterMenu filterMenu = e.FilterMenu; DataGridViewColumn column = e.Column; _sortOrderList.Remove(column.Name); if (filterMenu.ActiveSortType != SortType.None) { _sortOrderList.Add(column.Name); } SortString = BuildSortString(); } }