Ejemplo n.º 1
0
        /// <summary>
        /// ColumnHeaderCell constructor
        /// </summary>
        /// <param name="oldCell"></param>
        /// <param name="filterEnabled"></param>
        public ColumnHeaderCell(DataGridViewColumnHeaderCell oldCell, bool filterEnabled)
        {
            Tag              = oldCell.Tag;
            ErrorText        = oldCell.ErrorText;
            ToolTipText      = oldCell.ToolTipText;
            Value            = oldCell.Value;
            ValueType        = oldCell.ValueType;
            ContextMenuStrip = oldCell.ContextMenuStrip;
            Style            = oldCell.Style;
            _filterEnabled   = filterEnabled;

            ColumnHeaderCell oldCellt = oldCell as ColumnHeaderCell;

            if (oldCellt != null && oldCellt.MenuStrip != null)
            {
                MenuStrip                 = oldCellt.MenuStrip;
                _filterImage              = oldCellt._filterImage;
                _filterButtonPressed      = oldCellt._filterButtonPressed;
                _filterButtonOver         = oldCellt._filterButtonOver;
                _filterButtonOffsetBounds = oldCellt._filterButtonOffsetBounds;
                _filterButtonImageBounds  = oldCellt._filterButtonImageBounds;
                MenuStrip.FilterChanged  += new EventHandler(menuStrip_FilterChanged);
                MenuStrip.SortChanged    += new EventHandler(menuStrip_SortChanged);
            }
            else
            {
                MenuStrip = new MenuStrip(oldCell.OwningColumn.ValueType);
                MenuStrip.FilterChanged += new EventHandler(menuStrip_FilterChanged);
                MenuStrip.SortChanged   += new EventHandler(menuStrip_SortChanged);
            }

            IsFilterDateAndTimeEnabled = FilterDateAndTimeDefaultEnabled;
            IsSortEnabled   = true;
            IsFilterEnabled = true;
        }
        /// <summary>
        /// Build the complete Sort string
        /// </summary>
        /// <returns></returns>
        private string BuildSortString()
        {
            StringBuilder sb   = new StringBuilder("");
            string        appx = "";

            foreach (string sortOrder in _sortOrderList)
            {
                DataGridViewColumn column = Columns[sortOrder];

                if (column != null)
                {
                    ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
                    if (cell != null)
                    {
                        if (cell.FilterAndSortEnabled && cell.ActiveSortType != MenuStrip.SortType.None)
                        {
                            sb.AppendFormat(appx + cell.SortString, column.DataPropertyName);
                            appx = ", ";
                        }
                    }
                }
            }

            return(sb.ToString());
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Enable a Filter and Sort on a DataGridViewColumn
        /// </summary>
        /// <param name="column"></param>
        public void EnableFilterAndSort(DataGridViewColumn column)
        {
            if (Columns.Contains(column))
            {
                ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
                if (cell != null)
                {
                    if (!cell.FilterAndSortEnabled && (cell.FilterString.Length > 0 || cell.SortString.Length > 0))
                    {
                        CleanFilter(true);
                    }

                    cell.FilterAndSortEnabled = true;
                    _filteredColumns.Remove(column.Name);

                    SetFilterDateAndTimeEnabled(column, cell.IsFilterDateAndTimeEnabled);
                    SetSortEnabled(column, cell.IsSortEnabled);
                    SetFilterEnabled(column, cell.IsFilterEnabled);
                }
                else
                {
                    column.SortMode     = DataGridViewColumnSortMode.Programmatic;
                    cell                = new ColumnHeaderCell(column.HeaderCell, true);
                    cell.SortChanged   += new ColumnHeaderCellEventHandler(cell_SortChanged);
                    cell.FilterChanged += new ColumnHeaderCellEventHandler(cell_FilterChanged);
                    cell.FilterPopup   += new ColumnHeaderCellEventHandler(cell_FilterPopup);
                    column.MinimumWidth = cell.MinimumSize.Width;
                    if (ColumnHeadersHeight < cell.MinimumSize.Height)
                    {
                        ColumnHeadersHeight = cell.MinimumSize.Height;
                    }
                    column.HeaderCell = cell;
                }
            }
        }
 /// <summary>
 /// Set TextChanged delay milliseconds on filter checklist on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 public void SetFilterChecklistTextFilterTextChangedDelayMs(DataGridViewColumn column, int milliseconds)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SetTextFilterTextChangedDelayMs(milliseconds);
         }
     }
 }
 /// <summary>
 /// Disable TextChanged delay on filter checklist on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 public void SetFilterChecklistTextFilterTextChangedDelayDisabled(DataGridViewColumn column)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SetTextFilterTextChangedDelayNodesDisabled();
         }
     }
 }
 /// <summary>
 /// Set nodes to enable TextChanged delay on filter checklist on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 /// <param name="numnodes"></param>
 public void SetFilterChecklistTextFilterTextChangedDelayNodes(DataGridViewColumn column, int numnodes)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.TextFilterTextChangedDelayNodes = numnodes;
         }
     }
 }
 /// <summary>
 /// Enable or disable Filter checklist nodes max on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 /// <param name="enabled"></param>
 public void EnabledFilterChecklistNodesMax(DataGridViewColumn column, bool enabled)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.EnabledFilterChecklistNodesMax(enabled);
         }
     }
 }
 public void ShowAllMenuStrip()
 {
     foreach (DataGridViewColumn column in this.Columns)
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             Cell_FilterPopup(cell, new ColumnHeaderCellEventArgs(cell.MenuStrip, column));
         }
     }
 }
 /// <summary>
 /// Set FilterDateAndTime status for a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 /// <param name="filterDateAndTimeEnabled"></param>
 public void SetFilterDateAndTimeEnabled(DataGridViewColumn column, bool filterDateAndTimeEnabled)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.IsFilterDateAndTimeEnabled = filterDateAndTimeEnabled;
         }
     }
 }
 /// <summary>
 /// Enable or disable Text filter on checklist remove node mode for a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 /// <param name="enabled"></param>
 public void SetChecklistTextFilterRemoveNodesOnSearchMode(DataGridViewColumn column, bool enabled)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SetChecklistTextFilterRemoveNodesOnSearchMode(enabled);
         }
     }
 }
 /// <summary>
 /// Enable or disable Filter capabilities for a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 /// <param name="enabled"></param>
 public void SetFilterEnabled(DataGridViewColumn column, bool enabled)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SetFilterEnabled(enabled);
         }
     }
 }
Ejemplo n.º 12
0
 /// <summary>
 /// Show a menu strip
 /// </summary>
 /// <param name="column"></param>
 public void ShowMenuStrip(DataGridViewColumn column)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             Cell_FilterPopup(cell, new ColumnHeaderCellEventArgs(cell.MenuStrip, column));
         }
     }
 }
 /// <summary>
 /// Sort ASC
 /// </summary>
 public void SortDESC(DataGridViewColumn column)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SortDESC();
         }
     }
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Set the text filter search nodes behaviour
 /// </summary>
 public void SetTextFilterRemoveNodesOnSearch(DataGridViewColumn column, bool enabled)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.DoesTextFilterRemoveNodesOnSearch = enabled;
         }
     }
 }
Ejemplo n.º 15
0
 /// <summary>
 /// Disable a Filter checklist on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 public void DisableFilterChecklist(DataGridViewColumn column)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SetFilterChecklistEnabled(false);
         }
     }
 }
Ejemplo n.º 16
0
 /// <summary>
 /// Enable a Filter custom on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 public void EnableFilterCustom(DataGridViewColumn column)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SetFilterCustomEnabled(true);
         }
     }
 }
 /// <summary>
 /// Set Filter checklist nodes max on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 /// <param name="maxnodes"></param>
 public void SetFilterChecklistNodesMax(DataGridViewColumn column, int maxnodes)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             cell.SetFilterChecklistNodesMax(maxnodes);
         }
     }
 }
Ejemplo n.º 18
0
        /// <summary>
        /// Get the text filter search nodes behaviour
        /// </summary>
        public Nullable <bool> GetTextFilterRemoveNodesOnSearch(DataGridViewColumn column)
        {
            Nullable <bool> ret = null;

            if (Columns.Contains(column))
            {
                ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
                if (cell != null)
                {
                    ret = cell.DoesTextFilterRemoveNodesOnSearch;
                }
            }
            return(ret);
        }
        /// <summary>
        /// Overridden OnColumnRemoved event
        /// </summary>
        /// <param name="e"></param>
        protected override void OnColumnRemoved(DataGridViewColumnEventArgs e)
        {
            _filteredColumns.Remove(e.Column.Name);
            _filterOrderList.Remove(e.Column.Name);
            _sortOrderList.Remove(e.Column.Name);

            ColumnHeaderCell cell = e.Column.HeaderCell as ColumnHeaderCell;

            if (cell != null)
            {
                cell.SortChanged   -= cell_SortChanged;
                cell.FilterChanged -= cell_FilterChanged;
                cell.FilterPopup   -= cell_FilterPopup;
            }
            base.OnColumnRemoved(e);
        }
Ejemplo n.º 20
0
        /// <summary>
        /// Handle the dispose methods
        /// </summary>
        /// <param name="e"></param>
        protected override void OnHandleDestroyed(EventArgs e)
        {
            foreach (DataGridViewColumn column in Columns)
            {
                ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
                if (cell != null)
                {
                    cell.SortChanged   -= Cell_SortChanged;
                    cell.FilterChanged -= Cell_FilterChanged;
                    cell.FilterPopup   -= Cell_FilterPopup;
                    MenuStrip menustrip = cell.MenuStrip;
                    menustrip.Dispose();
                }
            }

            base.OnHandleDestroyed(e);
        }
        /// <summary>
        /// Overriden  OnColumnAdded event
        /// </summary>
        /// <param name="e"></param>
        protected override void OnColumnAdded(DataGridViewColumnEventArgs e)
        {
            e.Column.SortMode = DataGridViewColumnSortMode.Programmatic;
            ColumnHeaderCell cell = new ColumnHeaderCell(e.Column.HeaderCell, FilterAndSortEnabled);

            cell.SortChanged     += new ColumnHeaderCellEventHandler(cell_SortChanged);
            cell.FilterChanged   += new ColumnHeaderCellEventHandler(cell_FilterChanged);
            cell.FilterPopup     += new ColumnHeaderCellEventHandler(cell_FilterPopup);
            e.Column.MinimumWidth = cell.MinimumSize.Width;
            if (ColumnHeadersHeight < cell.MinimumSize.Height)
            {
                ColumnHeadersHeight = cell.MinimumSize.Height;
            }
            e.Column.HeaderCell = cell;

            base.OnColumnAdded(e);
        }
        /// <summary>
        /// Overridden OnColumnRemoved event
        /// </summary>
        /// <param name="e"></param>
        protected override void OnColumnRemoved(DataGridViewColumnEventArgs e)
        {
            _filteredColumns.Remove(e.Column.Name);
            _filterOrderList.Remove(e.Column.Name);
            _sortOrderList.Remove(e.Column.Name);

            ColumnHeaderCell cell = e.Column.HeaderCell as ColumnHeaderCell;

            if (cell != null)
            {
                cell.SortChanged   -= Cell_SortChanged;
                cell.FilterChanged -= Cell_FilterChanged;
                cell.FilterPopup   -= Cell_FilterPopup;

                _columnHeaderCellsToCleanEvents.Add(cell);
                _menuStripToDispose.Add(cell.MenuStrip);
            }
            base.OnColumnRemoved(e);
        }
        /// <summary>
        /// Clean all Sort on specific column
        /// </summary>
        /// <param name="column"></param>
        /// <param name="fireEvent"></param>
        public void CleanSort(DataGridViewColumn column, bool fireEvent)
        {
            if (Columns.Contains(column))
            {
                ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
                if (cell != null && FilterableCells.Contains(cell))
                {
                    cell.CleanSort();
                    //remove column from sorted list
                    _sortOrderList.Remove(column.Name);
                }
            }

            if (fireEvent)
            {
                SortString = BuildSortString();
            }
            else
            {
                _sortString = BuildSortString();
            }
        }
        /// <summary>
        /// Clean Filter on specific column
        /// </summary>
        /// <param name="column"></param>
        /// <param name="fireEvent"></param>
        public void CleanFilter(DataGridViewColumn column, bool fireEvent)
        {
            if (Columns.Contains(column))
            {
                ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
                if (cell != null)
                {
                    cell.CleanFilter();
                    //remove column from filtered list
                    _filterOrderList.Remove(column.Name);
                }
            }

            if (fireEvent)
            {
                FilterString = BuildFilterString();
            }
            else
            {
                _filterString = BuildFilterString();
            }
        }
 /// <summary>
 /// Disable a Filter and Sort on a DataGridViewColumn
 /// </summary>
 /// <param name="column"></param>
 public void DisableFilterAndSort(DataGridViewColumn column)
 {
     if (Columns.Contains(column))
     {
         ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
         if (cell != null)
         {
             if (cell.FilterAndSortEnabled == true && (cell.SortString.Length > 0 || cell.FilterString.Length > 0))
             {
                 CleanFilter(true);
                 cell.FilterAndSortEnabled = false;
             }
             else
             {
                 cell.FilterAndSortEnabled = false;
             }
             _filterOrderList.Remove(column.Name);
             _sortOrderList.Remove(column.Name);
             _filteredColumns.Remove(column.Name);
         }
     }
 }
        /// <summary>
        /// Handle the dispose methods
        /// </summary>
        /// <param name="e"></param>
        protected override void OnHandleDestroyed(EventArgs e)
        {
            foreach (DataGridViewColumn column in Columns)
            {
                ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell;
                if (cell != null)
                {
                    cell.SortChanged   -= Cell_SortChanged;
                    cell.FilterChanged -= Cell_FilterChanged;
                    cell.FilterPopup   -= Cell_FilterPopup;
                }
            }
            foreach (ColumnHeaderCell cell in _columnHeaderCellsToCleanEvents)
            {
                cell.CleanEvents();
            }
            foreach (MenuStrip menustrip in _menuStripToDispose)
            {
                menustrip.Dispose();
            }

            base.OnHandleDestroyed(e);
        }
        /// <summary>
        /// Build the complete Filter string
        /// </summary>
        /// <returns></returns>
        private string BuildFilterString()
        {
            StringBuilder sb   = new StringBuilder("");
            string        appx = "";

            foreach (string filterOrder in _filterOrderList)
            {
                DataGridViewColumn Column = Columns[filterOrder];

                if (Column != null)
                {
                    ColumnHeaderCell cell = Column.HeaderCell as ColumnHeaderCell;
                    if (cell != null)
                    {
                        if (cell.FilterAndSortEnabled && cell.ActiveFilterType != MenuStrip.FilterType.None)
                        {
                            sb.AppendFormat(appx + "(" + cell.FilterString + ")", Column.DataPropertyName);
                            appx = " AND ";
                        }
                    }
                }
            }
            return(sb.ToString());
        }