/// <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()); }
/// <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); } } }
/// <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> /// Sort ASC /// </summary> public void SortDESC(DataGridViewColumn column) { if (Columns.Contains(column)) { ColumnHeaderCell cell = column.HeaderCell as ColumnHeaderCell; if (cell != null) { cell.SortDESC(); } } }
private void SetHeaderRow(ColumnHeaderSection header, CellSetting setting) { HeaderCell chCell; if (setting.CellInstance is RowHeaderCell) { chCell = new CornerHeaderCell(); } else { chCell = new ColumnHeaderCell(); } //var chCell = new ColumnHeaderCell(); chCell.Name = string.Format("lbl{0}", setting.Name); chCell.Value = setting.Caption; chCell.Size = setting.Size; chCell.Location = setting.Location; var style = new CellStyle() { TextAlign = MultiRowContentAlignment.MiddleCenter, Multiline = MultiRowTriState.False, Font = setting.Font ?? this.Font, }; chCell.Style = style; if (chCell is ColumnHeaderCell) { var h = chCell as ColumnHeaderCell; if (this.Sortable) { h.SelectionMode = MultiRowSelectionMode.None; h.SortMode = SortMode.Automatic; } else { h.SortMode = SortMode.NotSortable; } if (setting.SortDropDown) { h.DropDownContextMenuStrip = GetSortDropDownContextMenuStrip(); } if (setting.DropDownList != null) { h.DropDownList = setting.DropDownList; } } header.Cells.Add(chCell); }
/// <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); }
/// <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> /// 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> /// Enable a Filter and Sort on a DataGridViewColumn /// </summary> /// <param name="column"></param> public void EnableFilterAndSort(DataGridViewColumn column) { //this.DataSource = SortString; 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> /// 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()); }