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);
                }
            }
        }
Example #2
0
        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();
 }