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 |