RadGrid for ASP.NET

Custom filter options with handling Send comments on this topic.
Filtering > How to > Custom filter options with handling

Glossary Item Box

The example in this section demonstrates simplified filtering menu. The main idea is to clear the FilterMenu.Items collection on PageInit, create your own items with Text, Value and attach OnClick event to them. Then, in the corresponding event handler, you can get reference to the currently activated filter item selection and invoke its FireComandEvent() method (passing two parameters - eventName and key->value pair which holds the menuItem.Value and the ColumnName for which the filter operation will be proceeded).

ASPX/ASCX Copy Code
<rad:RadGrid ID="RadGrid1" runat="server" AllowFilteringByColumn="true" AutoGenerateColumns="false">
<
MasterTableView AllowPaging="true" PageSize="10">
<Columns>
 
<rad:GridBoundColumn DataField="CompanyName" HeaderText="Company Name" UniqueName="CompanyName" />
 
<rad:GridBoundColumn DataField="ContactName" HeaderText="Contact Name" UniqueName="ContactName" />
</Columns>
</
MasterTableView>
<
FilterMenu HoverBackColor="LightSteelBlue" HoverBorderColor="Navy" NotSelectedImageUrl="~/RadControls/Grid/Skins/Default/NotSelectedMenu.gif"
SelectColumnBackColor= "Control" SelectedImageUrl="~/RadControls/Grid/Skins/Default/SelectedMenu.gif"
TextColumnBackColor= "Window">
</
FilterMenu>
</
rad:RadGrid> >

In the code-behind:

C# Copy Code
override protected void OnInit(EventArgs e)
 {
 
private void InitializeComponent()
 {
  
this.Init += new EventHandler(WebForm1_Init);
  
this.Load += new System.EventHandler(this.Page_Load);
  RadGrid1.NeedDataSource +=
new Telerik.WebControls.GridNeedDataSourceEventHandler(RadGrid1_NeedDataSource);
 }


 
private void RadGrid1_NeedDataSource(object source, Telerik.WebControls.GridNeedDataSourceEventArgs e)
 {
  RadGrid1.DataSource = DataSourceHelperCS.GetDataTable(
"SELECT * FROM Customers");
 }

 
private void WebForm1_Init(object sender, EventArgs e)
 {
  RadGrid1.FilterMenu.Items.Clear();

  GridMenuItem menuItem =
new GridMenuItem();
  RadGrid1.FilterMenu.Items.Add(menuItem);
  menuItem.Text =
"Custom-Text (Contains)";
  menuItem.Value =
"Contains";
  menuItem.OnClick +=
new GridMenuItemClickEventHandler(menuItem_OnClick);
 }

 
private void menuItem_OnClick(GridMenuItem sender, GridMenuItemClickEventArgs e)
 {
  GridFilteringItem filterItem = RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0]
as GridFilteringItem;
  GridMenuItem menuItem = sender
as GridMenuItem;
  filterItem.FireCommandEvent(
"Filter", new Pair(menuItem.Value, e.ColumnName));

 }
VB.NET Copy Code
Protected Overrides Sub OnInit(ByVal e As EventArgs)
 Dim InitializeComponent As System.Void
 AddHandler Init, AddressOf Me.WebForm1_Init
 AddHandler Load, AddressOf Me.Page_Load
 AddHandler RadGrid1.NeedDataSource, AddressOf Me.RadGrid1_NeedDataSource
End Sub

Private Sub RadGrid1_NeedDataSource(ByVal source As Object, ByVal e As Telerik.WebControls.GridNeedDataSourceEventArgs)
 RadGrid1.DataSource = DataSourceHelperCS.GetDataTable("SELECT * FROM Customers")
End Sub

Private Sub WebForm1_Init(ByVal sender As Object, ByVal e As EventArgs)
 RadGrid1.FilterMenu.Items.Clear
 Dim menuItem As GridMenuItem = New GridMenuItem
 RadGrid1.FilterMenu.Items.Add(menuItem)
 menuItem.Text = "Custom-Text (Contains)"
 menuItem.Value = "Contains"
 AddHandler menuItem.OnClick, AddressOf Me.menuItem_OnClick
End Sub

Private Sub menuItem_OnClick(ByVal sender As GridMenuItem, ByVal e As GridMenuItemClickEventArgs)
 Dim filterItem As GridFilteringItem = CType(RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)(0),GridFilteringItem)
 Dim menuItem As GridMenuItem = CType(sender,GridMenuItem)
 filterItem.FireCommandEvent("Filter", New Pair(menuItem.Value, e.ColumnName))
End Sub