How to hide option from filter bar dropdown list in WinForms GridGroupingControl?
Hide the custom option
To remove the
(Custom) option from the FilterBar dropdown list, you need to customize GridListFilterBarCellRenderer
using TableControlCurrentCellShowingDropDown,
TableControlCurrentCellCloseDropDown events.
private void gridGroupingControl1_TableControlCurrentCellCloseDropDown(object sender, GridTableControlPopupClosedEventArgs e)
{
GridCurrentCell cc = e.TableControl?.CurrentCell;
if (cc != null && cc.Renderer != null && cc.Renderer.GetType() == typeof(GridListFilterBarCellRenderer))
{
GridListFilterBarCellRenderer renderer = ((GridListFilterBarCellRenderer)(cc.Renderer));
if (renderer != null && renderer.ListControlPart != null && ((renderer.ListControlPart.SelectedIndex >= 1) && (renderer.ListControlPart.SelectedIndex <= (renderer.ListControlPart.Items?.Count - 1))))
{
renderer.ListControlPart.SelectedIndex = (renderer.ListControlPart.SelectedIndex + 1);
}
}
}
private void gridGroupingControl1_TableControlCurrentCellShowingDropDown(object sender, GridTableControlCurrentCellShowingDropDownEventArgs e)
{
GridCurrentCell cc = e.TableControl?.CurrentCell;
if (cc != null && cc.Renderer != null && cc.Renderer.GetType() == typeof(GridListFilterBarCellRenderer))
{
GridListFilterBarCellRenderer renderer = ((GridListFilterBarCellRenderer)(cc.Renderer));
if (renderer != null)
{
GridTableCellStyleInfo tableStyleInfo = ((GridTableCellStyleInfo)(renderer.StyleInfo));
if (tableStyleInfo != null)
{
if (renderer.ListControlPart?.Items?.Count > 1)
renderer.ListControlPart.Items.RemoveAt(1);
}
}
}
}Private Sub gridGroupingControl1_TableControlCurrentCellCloseDropDown(ByVal sender As Object, ByVal e As GridTableControlPopupClosedEventArgs)
Dim cc As GridCurrentCell = e.TableControl.CurrentCell
If (TypeOf cc.Renderer Is GridListFilterBarCellRenderer) Then
Dim renderer As GridListFilterBarCellRenderer = CType(cc.Renderer,GridListFilterBarCellRenderer)
If ((renderer.ListControlPart.SelectedIndex >= 1) _
AndAlso (renderer.ListControlPart.SelectedIndex _
<= (renderer.ListControlPart.Items.Count - 1))) Then
renderer.ListControlPart.SelectedIndex = (renderer.ListControlPart.SelectedIndex + 1)
End If
End If
End Sub
Private Sub gridGroupingControl1_TableControlCurrentCellShowingDropDown(ByVal sender As Object, ByVal e As GridTableControlCurrentCellShowingDropDownEventArgs)
Dim cc As GridCurrentCell = e.TableControl.CurrentCell
If (TypeOf cc.Renderer Is GridListFilterBarCellRenderer) Then
Dim renderer As GridListFilterBarCellRenderer = CType(cc.Renderer,GridListFilterBarCellRenderer)
Dim tableStyleInfo As GridTableCellStyleInfo = CType(renderer.StyleInfo,GridTableCellStyleInfo)
renderer.ListControlPart.Items.RemoveAt(1)
End If
End Sub