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 int Compare(object x, object y) { IComparable v1 = m_datas.GetValeur(x, m_nColonneSort, false) as IComparable; IComparable v2 = m_datas.GetValeur(y, m_nColonneSort, false) as IComparable; if (v1 == null && v2 != null) { return(m_bAsc ? 1 : -1); } if (v2 == null && v1 == null) { return(m_bAsc ? 1 : -1); } return(m_bAsc ? v1.CompareTo(v2) : -v1.CompareTo(v2)); }