This is a migrated thread and some comments may be shown as answers.

[Solved] RadGrid Custom Filter Requested value 'null' was not found Issue

1 Answer 172 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Mahesh Babu
Top achievements
Rank 1
Mahesh Babu asked on 27 Jul 2009, 10:27 AM
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











1 Answer, 1 is accepted

Sort by
0
Yavor
Telerik team
answered on 30 Jul 2009, 06:54 AM
Hello Mahesh,

Can you please make sure that you take advantage of an advanced databinding technique - either by using NeedDataSource event handler, or a datasource control, as opposed to calling DataBind() for the grid directly. Additionally, you can consider taking advantage of the filter template feature, which is demonstrated in the following article:

http://demos.telerik.com/aspnet-ajax/grid/examples/programming/filtertemplate/defaultcs.aspx

I hope this information helps.

Best wishes,
Yavor
the Telerik team

Instantly find answers to your questions on the new Telerik Support Portal.
Check out the tips for optimizing your support resource searches.
Tags
Grid
Asked by
Mahesh Babu
Top achievements
Rank 1
Answers by
Yavor
Telerik team
Share this question
or