protected override void OnColumnHeaderMouseClick(DataGridViewCellMouseEventArgs e) { if (dataSource == null) dataSource = (DataTable)this.DataSource; positionX = e.X; positionY = e.Y; bool flag = false; for (int columnCount = 0; columnCount < dataSource.Columns.Count; columnCount++) { if (!flag) { positionX = positionX + this.Columns[columnCount].Width; if (this.Columns[columnCount].Name == this.Columns[e.ColumnIndex].Name) flag = true; } } positionX = positionX - this.Columns[0].Width; if (e.Button == MouseButtons.Right) { ContextMenu filterContextMenu = new ContextMenu(); if (filterColumnList.Contains(this.Columns[e.ColumnIndex].HeaderText)) { columnName = this.Columns[e.ColumnIndex].HeaderText; ArrayList columnFilterList = new ArrayList(); for (int count = 0; count < dataSource.Rows.Count; count++) { try { if (!columnFilterList.Contains(dataSource.Rows[count][columnName].ToString())) columnFilterList.Add(dataSource.Rows[count][columnName].ToString()); } catch { } } columnFilterList.Sort(); for (int count = 0; count < columnFilterList.Count; count++) { MenuItem uniqueColumnsMenuItem = new MenuItem(); uniqueColumnsMenuItem.Name = columnFilterList[count].ToString(); uniqueColumnsMenuItem.Text = columnFilterList[count].ToString(); if (checkedFilterHashTable.Contains(columnName)) { if (((ArrayList)checkedFilterHashTable[columnName]).Contains(uniqueColumnsMenuItem.Text)) uniqueColumnsMenuItem.Checked = true; else uniqueColumnsMenuItem.Checked = false; } uniqueColumnsMenuItem.Click += new EventHandler(menuItem_Click); filterContextMenu.MenuItems.Add(uniqueColumnsMenuItem); } filterContextMenu.MenuItems.Add("-"); MenuItem clearThisFilterMenuItem = new MenuItem(); clearThisFilterMenuItem.Name = "Clear This Filter"; clearThisFilterMenuItem.Text = "Clear This Filter"; filterContextMenu.MenuItems.Add(clearThisFilterMenuItem); filterContextMenu.MenuItems.Add("-"); MenuItem clearAllFilterMenuItem = new MenuItem(); clearAllFilterMenuItem.Name = "Clear All Filters"; clearAllFilterMenuItem.Text = "Clear All Filters"; filterContextMenu.MenuItems.Add(clearAllFilterMenuItem); clearThisFilterMenuItem.Click += new EventHandler(menuItem_Click); clearAllFilterMenuItem.Click += new EventHandler(menuItem_Click); } filterContextMenu.Show(this, new Point(positionX, e.Y)); } }
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)