RadGrid Default Filtering not working

6 posts, 2 answers
  1. Matt
    Matt avatar
    33 posts
    Member since:
    Nov 2010

    Posted 02 Dec 2013 Link to this post

    Hello,

    I'm trying to render a RadGrid with default filtering as explained here. I've managed to configure the grid so that filter controls are set when the page loads, but the data in the grid is not filtered. I suspect that I've missed something simple so here's my code for you to laugh at:
    ASPX
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="Default" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <head runat="server">
        <title></title>
        <telerik:RadStyleSheetManager id="RadStyleSheetManager1" runat="server" />
    </head>
    <body>
        <form id="form1" runat="server">
        <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
            <Scripts>
                <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.Core.js" />
                <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQuery.js" />
                <asp:ScriptReference Assembly="Telerik.Web.UI" Name="Telerik.Web.UI.Common.jQueryInclude.js" />
            </Scripts>
        </telerik:RadScriptManager>
        <script type="text/javascript">
            //Put your JavaScript code here.
        </script>
        <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
        </telerik:RadAjaxManager>
        <div>
            <telerik:RadGrid ID="rgdUsers" runat="server"
                AutoGenerateColumns="false"
                AllowFilteringByColumn="true"
                OnNeedDataSource="rgdUsers_NeedDataSource"
                OnPreRender="rgdUsers_PreRender"  >
                <MasterTableView DataKeyNames="Id, Active, Name, Surname"  >
                    <Columns>
                        <telerik:GridBoundColumn UniqueName="ActiveColumn" DataField="Active" HeaderText="Active"
                            AutoPostBackOnFilter="true"
                            CurrentFilterFunction="EqualTo"
                            CurrentFilterValue="True" />
                        <telerik:GridBoundColumn UniqueName="NameColumn" DataField="Name" HeaderText="Name" />
                        <telerik:GridBoundColumn UniqueName="SurnameColumn" DataField="Surname" HeaderText="Surname" />
                    </Columns>
                </MasterTableView>
            </telerik:RadGrid>
        </div>
        </form>
    </body>
    </html>

    C#
    using System;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    using System.Data;
    using System.Configuration;
    using System.Web.Security;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Linq;
     
    using Telerik.Web.UI;
     
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
     
        protected void rgdUsers_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
        {
            using (SwmpHermesEntities ent = new SwmpHermesEntities())
            {
                var Users = ent.Users.ToList();
                rgdUsers.DataSource = Users;
            }
        }
     
        protected void rgdUsers_PreRender(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                rgdUsers.MasterTableView.FilterExpression = "([Active] = True)";
     
                GridColumn activeColumn = rgdUsers.MasterTableView.GetColumnSafe("ActiveColumn");
                activeColumn.CurrentFilterFunction = GridKnownFunction.EqualTo;
                activeColumn.CurrentFilterValue = "True";
            }
        }
    }

    If I toggle the Active column checkbox, the grid behaves as expected. I'm using RadControls for ASP.NET AJAX Q2 2013.

    Thanks in advance,
    Matt
  2. Answer
    Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 02 Dec 2013 Link to this post

    Hi Matt,

    Please note that after setting the filter, you must rebind the grid:

    C#:
    protected void rgdUsers_PreRender(object sender, EventArgs e)
    {
      if (!this.IsPostBack)
       {
         rgdUsers.MasterTableView.FilterExpression = "([Active] = True)";
         GridColumn activeColumn = rgdUsers.MasterTableView.GetColumnSafe("ActiveColumn");
         activeColumn.CurrentFilterFunction = GridKnownFunction.EqualTo;
         activeColumn.CurrentFilterValue = "True";
         rgdUsers.Rebind();
       }
    }

    Thanks,
    Princy
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Matt
    Matt avatar
    33 posts
    Member since:
    Nov 2010

    Posted 03 Dec 2013 Link to this post

    Hi Princy, thanks for the reply.

    When I call the Rebind() I get an exception :(

    Telerik.Web.UI.ParseException was unhandled by user code
      HResult=-2146233088
      Message=Expression expected
      Source=Telerik.Web.UI
      Position=1
      StackTrace:
           at Telerik.Web.UI.ExpressionParser.ParsePrimaryStart()
           at Telerik.Web.UI.ExpressionParser.ParsePrimary()
           at Telerik.Web.UI.ExpressionParser.ParseUnary()
           at Telerik.Web.UI.ExpressionParser.ParseMultiplicative()
           at Telerik.Web.UI.ExpressionParser.ParseAdditive()
           at Telerik.Web.UI.ExpressionParser.ParseComparison()
           at Telerik.Web.UI.ExpressionParser.ParseLogicalAnd()
           at Telerik.Web.UI.ExpressionParser.ParseLogicalOr()
           at Telerik.Web.UI.ExpressionParser.ParseExpression()
           at Telerik.Web.UI.ExpressionParser.ParseParenExpression()
           at Telerik.Web.UI.ExpressionParser.ParsePrimaryStart()
           at Telerik.Web.UI.ExpressionParser.ParsePrimary()
           at Telerik.Web.UI.ExpressionParser.ParseUnary()
           at Telerik.Web.UI.ExpressionParser.ParseMultiplicative()
           at Telerik.Web.UI.ExpressionParser.ParseAdditive()
           at Telerik.Web.UI.ExpressionParser.ParseComparison()
           at Telerik.Web.UI.ExpressionParser.ParseLogicalAnd()
           at Telerik.Web.UI.ExpressionParser.ParseLogicalOr()
           at Telerik.Web.UI.ExpressionParser.ParseExpression()
           at Telerik.Web.UI.ExpressionParser.Parse(Type resultType)
           at Telerik.Web.UI.DynamicExpression.ParseLambda(ParameterExpression[] parameters, Type resultType, String expression, Object[] values)
           at Telerik.Web.UI.DynamicExpression.ParseLambda(Type itType, Type resultType, String expression, Object[] values)
           at Telerik.Web.UI.GridDynamicQueryable.Where(IQueryable source, String predicate, Object[] values)
           at Telerik.Web.UI.GridDataTableFromEnumerable.FillData35()
           at Telerik.Web.UI.GridDataTableFromEnumerable.FillData()
           at Telerik.Web.UI.GridResolveEnumerable.Initialize()
           at Telerik.Web.UI.GridResolveEnumerable.EnsureInitialized()
           at Telerik.Web.UI.GridResolveEnumerable.get_DataTable()
           at Telerik.Web.UI.GridEnumerableFromDataView..ctor(GridTableView owner, IEnumerable enumerable, Boolean CaseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText)
           at Telerik.Web.UI.GridDataSourceHelper.CreateGridEnumerable(GridTableView owner, IEnumerable enumerable, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText)
           at Telerik.Web.UI.GridDataSourceHelper.GetResolvedDataSource(GridTableView owner, Object dataSource, String dataMember, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText)
           at Telerik.Web.UI.GridTableView.get_ResolvedDataSource()
           at Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource)
           at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data)
           at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data)
           at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)
           at System.Web.UI.WebControls.DataBoundControl.PerformSelect()
           at Telerik.Web.UI.GridTableView.PerformSelect()
           at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
           at Telerik.Web.UI.GridTableView.DataBind()
           at Telerik.Web.UI.RadGrid.DataBind()
           at Telerik.Web.UI.RadGrid.AutoDataBind(GridRebindReason rebindReason)
           at Telerik.Web.UI.RadGrid.Rebind()
           at Default.rgdUsers_PreRender(Object sender, EventArgs e) in c:\Projects\Personal\RadControlsWebSite2\RadControlsWebSite2\Default.aspx.cs:line 43
           at System.Web.UI.Control.OnPreRender(EventArgs e)
           at System.Web.UI.WebControls.BaseDataBoundControl.OnPreRender(EventArgs e)
           at Telerik.Web.UI.RadCompositeDataBoundControl.OnPreRender(EventArgs e)
           at System.Web.UI.Control.PreRenderRecursiveInternal()
           at System.Web.UI.Control.PreRenderRecursiveInternal()
           at System.Web.UI.Control.PreRenderRecursiveInternal()
           at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
      InnerException: 


  5. Answer
    Princy
    Princy avatar
    17421 posts
    Member since:
    Mar 2007

    Posted 03 Dec 2013 Link to this post

    Hi Matt,

    Please try setting EnableLinqExpressions="false" in your code.

    ASPX:
    <telerik:RadGrid ID="rgdUsers" runat="server" EnableLinqExpressions="false". . .>

    Thanks,
    Princy
  6. Matt
    Matt avatar
    33 posts
    Member since:
    Nov 2010

    Posted 03 Dec 2013 Link to this post

    Bingo! Thanks Princy, thats fixed it!
  7. Santhosh
    Santhosh avatar
    1 posts
    Member since:
    Nov 2015

    Posted 26 Nov 2015 Link to this post

    Hi Princy,

     

    Can you please help me with my issue here.

    Inner Exception Type: Telerik.Web.UI.ParseException
    Inner Exception: Expression expected
    Inner Source: Telerik.Web.UI
    Inner Stack Trace: 
       at Telerik.Web.UI.ExpressionParser.ParsePrimaryStart()
       at Telerik.Web.UI.ExpressionParser.ParsePrimary()
       at Telerik.Web.UI.ExpressionParser.ParseUnary()
       at Telerik.Web.UI.ExpressionParser.ParseMultiplicative()
       at Telerik.Web.UI.ExpressionParser.ParseAdditive()
       at Telerik.Web.UI.ExpressionParser.ParseComparison()
       at Telerik.Web.UI.ExpressionParser.ParseLogicalAnd()
       at Telerik.Web.UI.ExpressionParser.ParseLogicalOr()
       at Telerik.Web.UI.ExpressionParser.ParseExpression()
       at Telerik.Web.UI.ExpressionParser.ParseParenExpression()
       at Telerik.Web.UI.ExpressionParser.ParsePrimaryStart()
       at Telerik.Web.UI.ExpressionParser.ParsePrimary()
       at Telerik.Web.UI.ExpressionParser.ParseUnary()
       at Telerik.Web.UI.ExpressionParser.ParseMultiplicative()
       at Telerik.Web.UI.ExpressionParser.ParseAdditive()
       at Telerik.Web.UI.ExpressionParser.ParseComparison()
       at Telerik.Web.UI.ExpressionParser.ParseLogicalAnd()
       at Telerik.Web.UI.ExpressionParser.ParseLogicalOr()
       at Telerik.Web.UI.ExpressionParser.ParseExpression()
       at Telerik.Web.UI.ExpressionParser.Parse(Type resultType)
       at Telerik.Web.UI.DynamicExpression.ParseLambda(ParameterExpression[] parameters, Type resultType, String expression, Object[] values)
       at Telerik.Web.UI.DynamicExpression.ParseLambda(Type itType, Type resultType, String expression, Object[] values)
       at Telerik.Web.UI.GridDynamicQueryable.Where(IQueryable source, String predicate, Object[] values)
       at Telerik.Web.UI.GridDataTableFromEnumerable.FillData35()
       at Telerik.Web.UI.GridDataTableFromEnumerable.FillData()
       at Telerik.Web.UI.GridResolveEnumerable.Initialize()
       at Telerik.Web.UI.GridResolveEnumerable.EnsureInitialized()
       at Telerik.Web.UI.GridEnumerableFromDataView..ctor(GridTableView owner, DataView dataView, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText)
       at Telerik.Web.UI.GridDataSourceHelper.CreateGridEnumerable(GridTableView owner, IEnumerable enumerable, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText)
       at Telerik.Web.UI.GridDataSourceHelper.GetResolvedDataSource(GridTableView owner, Object dataSource, String dataMember, Boolean caseSensitive, Boolean autoGenerateColumns, GridColumnCollection presentColumns, String[] additionalField, Boolean retrieveAllFields, Boolean enableSplitHeaderText)
       at Telerik.Web.UI.GridTableView.get_ResolvedDataSource()
       at Telerik.Web.UI.GridTableView.CreateChildControls(IEnumerable dataSource, Boolean useDataSource)
       at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data)
       at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data)
       at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)
       at System.Web.UI.WebControls.DataBoundControl.PerformSelect()
       at Telerik.Web.UI.GridTableView.PerformSelect()
       at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
       at Telerik.Web.UI.GridTableView.DataBind()
       at Telerik.Web.UI.GridTableView.Rebind()
       at suntech.OrderList.CustomerCombo_SelectedIndexChanged(Object sender, RadComboBoxSelectedIndexChangedEventArgs e) in c:\santhosh\SuntechERP\suntech\suntech\suntech\OrderList.aspx.cs:line 643
       at Telerik.Web.UI.RadComboBox.OnSelectedIndexChanged()
       at Telerik.Web.UI.RadComboBox.RaisePostDataChangedEvent()
       at Telerik.Web.UI.RadDataBoundControl.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent()
       at System.Web.UI.Page.RaiseChangedEvents()
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    Exception Type: System.Web.HttpUnhandledException
    Exception: Exception of type 'System.Web.HttpUnhandledException' was thrown.
    Source: DefaultPage
    Stack Trace: 
       at System.Web.UI.Page.HandleError(Exception e)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
       at System.Web.UI.Page.ProcessRequest()
       at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
       at System.Web.UI.Page.ProcessRequest(HttpContext context)
       at ASP.orderlist_aspx.ProcessRequest(HttpContext context) in c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\suntech\5ec9e0ec\2bfbf1d9\App_Web_m4jwchmn.0.cs:line 0
       at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
       at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Back to Top
UI for ASP.NET Ajax is Ready for VS 2017