Hi,
I have a radgrid to which I am trying to create custom filter by using http://www.telerik.com/help/aspnet-ajax/grdcustomfilteroptionswithhandling.html article. I am not able to see onClick event on GridFilterMenu class. When I add onItemClick event, I am getting the following error;
System.ArgumentException: Requested value 'null' was not found.
code:
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="scrp" runat="server"></asp:ScriptManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel2" runat="server">
<img id="imgid" src="images/loading.gif" alt="Loading" />
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="radioYes">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="radGrid" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="radioNo">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="radGrid" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadGrid ID="radGrid" runat="server" AutoGenerateColumns="true" AllowPaging="true"
PageSize="5" EnableAjaxSkinRendering="true" AllowFilteringByColumn="true"
Skin="Office2007">
<PagerStyle Mode="NextPrevNumericAndAdvanced" AlwaysVisible="true" />
</telerik:RadGrid>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Telerik.Web.UI;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadRadGrid();
}
}
protected void Page_Init(object sender, EventArgs e)
{
AddCustomGridFilters();
}
public void AddCustomGridFilters()
{
radGrid.FilterMenu.Items.Clear();
RadMenuItem[] radMenuItems = new RadMenuItem[7];
for (int index = 0; index < radMenuItems.Length; index++)
{
radMenuItems[index] = new RadMenuItem();
radGrid.FilterMenu.Items.Add(radMenuItems[index]);
}
radMenuItems[0].Text = Constants.EqualTo;
radMenuItems[1].Text = Constants.StartsWith;
radMenuItems[2].Text = Constants.EndsWith;
radMenuItems[3].Text = Constants.LessThan;
radMenuItems[4].Text = Constants.GreaterThan;
radMenuItems[5].Text = Constants.Contains;
radMenuItems[6].Text = Constants.NoFilter;
(radGrid.FilterMenu as GridFilterMenu).ItemClick += new RadMenuEventHandler(_Default_ItemClick);
}
void _Default_ItemClick(object sender, RadMenuEventArgs e)
{
//Do something.
}
private void LoadRadGrid()
{
this.radGrid.DataSource = GetDataTable();
this.radGrid.DataBind();
}
private DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID"));
dt.Columns.Add(new DataColumn("Name"));
dt.Columns.Add(new DataColumn("Marks"));
DataRow dr = dt.NewRow();
dr["ID"] = 1;
dr["Name"] = "Mahesh";
dr["Marks"] = 100;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 2;
dr["Name"] = "Rajesh";
dr["Marks"] = 55;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 3;
dr["Name"] = "Kishore";
dr["Marks"] = 89;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 4;
dr["Name"] = "Sasi";
dr["Marks"] = 44;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 5;
dr["Name"] = "Kamesh";
dr["Marks"] = 78;
dt.Rows.Add(dr);
return dt;
}
//This class contains all the constants
public class Constants
{
public const string CrtSegment = "crt";
public const string FleetSegment = "fleet";
// Numeric And String Constants
public const string EqualTo = "EqualTo";
public const string NotEqualTo = "NotEqualTo";
public const string GreaterThan = "More than";
public const string LessThan = "Less than";
public const string GreaterThanOrEqualTo = "GreaterThanOrEqualTo";
public const string LessThanOrEqualTo = "LessThanOrEqualTo";
public const string Between = "Between";
public const string NotBetween = "NotBetween";
public const string ISNull = "IsNull";
public const string ISNotNull = "NotIsNull";
public const string NoFilter = "No filter";
// String Constants
public const string Contains = "Contains...";
public const string DoesNotContain = "DoesNotContain";
public const string StartsWith = "Starts with...";
public const string EndsWith = "Ends with...";
public const string IsEmpty = "IsEmpty";
public const string IsNotEmpty = "IsNotEmpty";
//RadContextMenu Constants
public const string ShowColumn = "Show column";
public const string HideColumn = "Hide column";
public const string RestoreAll = "Restore All";
}
}
Thanks,
Mahesh
I have a radgrid to which I am trying to create custom filter by using http://www.telerik.com/help/aspnet-ajax/grdcustomfilteroptionswithhandling.html article. I am not able to see onClick event on GridFilterMenu class. When I add onItemClick event, I am getting the following error;
System.ArgumentException: Requested value 'null' was not found.
code:
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="scrp" runat="server"></asp:ScriptManager>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel1" runat="server">
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxLoadingPanel ID="RadAjaxLoadingPanel2" runat="server">
<img id="imgid" src="images/loading.gif" alt="Loading" />
</telerik:RadAjaxLoadingPanel>
<telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" >
<AjaxSettings>
<telerik:AjaxSetting AjaxControlID="radioYes">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="radGrid" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
<telerik:AjaxSetting AjaxControlID="radioNo">
<UpdatedControls>
<telerik:AjaxUpdatedControl ControlID="radGrid" LoadingPanelID="RadAjaxLoadingPanel1" />
</UpdatedControls>
</telerik:AjaxSetting>
</AjaxSettings>
</telerik:RadAjaxManager>
<telerik:RadGrid ID="radGrid" runat="server" AutoGenerateColumns="true" AllowPaging="true"
PageSize="5" EnableAjaxSkinRendering="true" AllowFilteringByColumn="true"
Skin="Office2007">
<PagerStyle Mode="NextPrevNumericAndAdvanced" AlwaysVisible="true" />
</telerik:RadGrid>
</div>
</form>
</body>
</html>
Default.aspx.cs
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Telerik.Web.UI;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadRadGrid();
}
}
protected void Page_Init(object sender, EventArgs e)
{
AddCustomGridFilters();
}
public void AddCustomGridFilters()
{
radGrid.FilterMenu.Items.Clear();
RadMenuItem[] radMenuItems = new RadMenuItem[7];
for (int index = 0; index < radMenuItems.Length; index++)
{
radMenuItems[index] = new RadMenuItem();
radGrid.FilterMenu.Items.Add(radMenuItems[index]);
}
radMenuItems[0].Text = Constants.EqualTo;
radMenuItems[1].Text = Constants.StartsWith;
radMenuItems[2].Text = Constants.EndsWith;
radMenuItems[3].Text = Constants.LessThan;
radMenuItems[4].Text = Constants.GreaterThan;
radMenuItems[5].Text = Constants.Contains;
radMenuItems[6].Text = Constants.NoFilter;
(radGrid.FilterMenu as GridFilterMenu).ItemClick += new RadMenuEventHandler(_Default_ItemClick);
}
void _Default_ItemClick(object sender, RadMenuEventArgs e)
{
//Do something.
}
private void LoadRadGrid()
{
this.radGrid.DataSource = GetDataTable();
this.radGrid.DataBind();
}
private DataTable GetDataTable()
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID"));
dt.Columns.Add(new DataColumn("Name"));
dt.Columns.Add(new DataColumn("Marks"));
DataRow dr = dt.NewRow();
dr["ID"] = 1;
dr["Name"] = "Mahesh";
dr["Marks"] = 100;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 2;
dr["Name"] = "Rajesh";
dr["Marks"] = 55;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 3;
dr["Name"] = "Kishore";
dr["Marks"] = 89;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 4;
dr["Name"] = "Sasi";
dr["Marks"] = 44;
dt.Rows.Add(dr);
dr = dt.NewRow();
dr["ID"] = 5;
dr["Name"] = "Kamesh";
dr["Marks"] = 78;
dt.Rows.Add(dr);
return dt;
}
//This class contains all the constants
public class Constants
{
public const string CrtSegment = "crt";
public const string FleetSegment = "fleet";
// Numeric And String Constants
public const string EqualTo = "EqualTo";
public const string NotEqualTo = "NotEqualTo";
public const string GreaterThan = "More than";
public const string LessThan = "Less than";
public const string GreaterThanOrEqualTo = "GreaterThanOrEqualTo";
public const string LessThanOrEqualTo = "LessThanOrEqualTo";
public const string Between = "Between";
public const string NotBetween = "NotBetween";
public const string ISNull = "IsNull";
public const string ISNotNull = "NotIsNull";
public const string NoFilter = "No filter";
// String Constants
public const string Contains = "Contains...";
public const string DoesNotContain = "DoesNotContain";
public const string StartsWith = "Starts with...";
public const string EndsWith = "Ends with...";
public const string IsEmpty = "IsEmpty";
public const string IsNotEmpty = "IsNotEmpty";
//RadContextMenu Constants
public const string ShowColumn = "Show column";
public const string HideColumn = "Hide column";
public const string RestoreAll = "Restore All";
}
}
Thanks,
Mahesh