private void FillMenuFiltre(int nColIndex, C2iWndDataGridColumn colonne) { m_nColIndexForFiltre = nColIndex; foreach (ToolStripItem item in new ArrayList(m_menuFiltreSpecial.DropDownItems)) { m_menuFiltreSpecial.DropDownItems.Remove(item); if (item != m_valueSelector) { item.Dispose(); } } m_menuFiltreSpecial.DropDownItems.Clear(); CGridFilterForWndDataGrid filtreActif = null; m_dicFiltre.TryGetValue(nColIndex, out filtreActif); IWndIncluableDansDataGrid wnd = colonne.Control as IWndIncluableDansDataGrid; if (wnd != null) { foreach (CGridFilterForWndDataGrid filtre in wnd.GetPossibleFilters()) { CGridFilterForWndDataGrid filtreToSet = filtre; if (filtreActif != null && filtreActif.GetType() == filtre.GetType()) { filtreToSet = filtreActif; } ToolStripMenuItem itemFiltre = new ToolStripMenuItem(filtreToSet.Label); itemFiltre.Tag = filtreToSet; itemFiltre.Click += new EventHandler(itemFiltre_Click); itemFiltre.Checked = filtreToSet == filtreActif; m_menuFiltreSpecial.DropDownItems.Add(itemFiltre); } } IEnumerable <object> source = m_listeObjetsOriginale; if (source != null) { CGridFilterListeValeurs filtreListe = filtreActif as CGridFilterListeValeurs; List <CCoupleValeurEtValeurDisplay> lstValeurs = new List <CCoupleValeurEtValeurDisplay>(); if (filtreListe == null) { source = m_grid.DataSource as IEnumerable <object>; } foreach (object obj in source) { CCoupleValeurEtValeurDisplay valeur = m_cache.GetValeur(obj, nColIndex, false); if (valeur != null) { lstValeurs.Add(valeur); } } m_valueSelector.Selector.FillWithValues(lstValeurs.ToArray(), filtreListe); if (!m_menuFiltre.Items.Contains(m_valueSelector)) { m_menuFiltre.Items.Add(m_valueSelector); } } }
public bool EditeFiltre(CGridFilterForWndDataGrid filtre) { CGridFilterDateComparison filtreText = filtre as CGridFilterDateComparison; if (filtreText != null) { return(CFormEditFiltreDate.EditeFiltre(filtreText)); } return(false); }
//------------------------------------------------------------- void itemFiltre_Click(object sender, EventArgs e) { ToolStripMenuItem item = sender as ToolStripMenuItem; CGridFilterForWndDataGrid filtre = item != null ? item.Tag as CGridFilterForWndDataGrid : null; if (filtre != null) { IEditeurFiltreGrid editeur = CGestionnaireEditeurFiltres.GetEditeur(filtre.GetType()); if (editeur != null) { if (editeur.EditeFiltre(filtre)) { m_dicFiltre[m_nColIndexForFiltre] = filtre; Filtrer(); } } else { m_dicFiltre[m_nColIndexForFiltre] = filtre; Filtrer(); } } }
private void m_grid_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.RowIndex == -1 && e.ColumnIndex >= 0) { Rectangle rct = e.CellBounds; rct.Inflate(-1, -1); CGridFilterForWndDataGrid filtre = null; m_dicFiltre.TryGetValue(e.ColumnIndex, out filtre); C2iWndDataGridColumn col = m_wndGrid.GetColumn(e.ColumnIndex); bool bHasFiltre = col != null && col.AllowFilter; if (bHasFiltre) { rct = new Rectangle(rct.Location, new Size(rct.Size.Width - c_nWidthImageHeader, rct.Height)); } DataGridViewCellStyle style = m_grid.Columns[e.ColumnIndex].HeaderCell.Style; Brush br = new SolidBrush(style.BackColor); e.Graphics.FillRectangle(br, e.CellBounds); br.Dispose(); Pen pen = new Pen(m_grid.GridColor); e.Graphics.DrawRectangle(pen, new Rectangle(e.CellBounds.Location, new Size(e.CellBounds.Width - 1, e.CellBounds.Height - 1))); br = new SolidBrush(style.ForeColor); e.Graphics.DrawString(m_grid.Columns[e.ColumnIndex].HeaderText, style.Font, br, rct); br.Dispose(); if (bHasFiltre) { if (filtre != null) { e.Graphics.DrawImageUnscaled(Properties.Resources.filtre, new Point(rct.Right, rct.Top)); } else { e.Graphics.DrawImageUnscaled(Properties.Resources.FiltreListe, new Point(rct.Right, rct.Top)); } } e.Handled = true; } }
private void Filtrer() { List <object> lst = m_listeObjetsOriginale; if (lst == null) { return; } using (CWaitCursor waiter = new CWaitCursor()) { bool bCancel = false; foreach (KeyValuePair <int, CGridFilterForWndDataGrid> kv in m_dicFiltre) { if (kv.Value != null) { CGridFilterForWndDataGrid filter = kv.Value; C2iWndDataGridColumn col = m_wndGrid.GetColumn(kv.Key); IWndIncluableDansDataGrid ctrl = col.Control as IWndIncluableDansDataGrid; if (ctrl != null) { List <object> lst2 = new List <object>(); foreach (object obj in lst) { int nVal = (int)Keys.Escape; nVal = GetKeyState((int)Keys.Escape); if (nVal < 0) { bCancel = true; break; } CCoupleValeurEtValeurDisplay dataVal = m_cache.GetValeur(obj, kv.Key, col.MultiThread); if (dataVal != null && filter.IsValueIn(dataVal.ObjectValue)) { lst2.Add(obj); } } lst = lst2; } } if (bCancel) { break; } } if (bCancel) { lst = m_listeObjetsOriginale; MessageBox.Show(I.T("Filter has been canceled|20019")); } } if (m_nColumnSort != null) { try { lst.Sort(new CGridSorter(m_nColumnSort.Value, m_bSortAsc, m_cache)); } catch { } } m_grid.DataSource = lst; foreach (DataGridViewColumn col in m_grid.Columns) { CDataGridViewCustomCellFor2iWnd cell = col.CellTemplate as CDataGridViewCustomCellFor2iWnd; } }
private void OnFiltrer(int nColumn, CGridFilterForWndDataGrid filtre) { m_dicFiltre[nColumn] = filtre; Filtrer(); }