其他分享
首页 > 其他分享> > 删除单个RadGrid列的过滤器

删除单个RadGrid列的过滤器

作者:互联网

我正在使用Telerik RadGrid,并在某些列上设置了自定义过滤器.
作为该自定义过滤器(只是一个文本框)的一部分,我还有一个按钮,当单击该按钮时,我只想清除该特定列的过滤器值.

我可以使用该按钮,并将特定列的过滤器设置为空字符串,然后重新绑定网格,但这不会删除过滤器值.

似乎只修改grid.MasterTableView.FilterExpression实际上会影响过滤器,但是如何从FilterExpression中仅删除一列的过滤器值呢?

<telerik:RadTextBox ID="RdTxtC" EmptyMessage="Search" runat="server" EmptyMessageStyle-Font-Italic="true"
    CssClass="padtop4" HoveredStyle-Font-Italic="true" ClientEvents-OnKeyPress="filterC"
    InputType="Text" Width="80%">
</telerik:RadTextBox>
<asp:Button ID="ibtnClearFilterTown" ClientIDMode="Static" runat="server" CssClass="clearFilterButton" OnClick="ibtnClearFilterTown_Click"/>

在后面的代码中:

protected void ibtnClearFilterTown_Click(object sender, EventArgs e)
{
    RgClientList.MasterTableView.GetColumnSafe("TownCity").CurrentFilterValue = String.Empty;
    RgClientList.Rebind();
}

删除单个列的过滤器似乎是一个相当简单的要求,因此我认为我必须缺少一些明显的东西-感谢您的帮助.

解决方法:

继续尝试此方法,而不要使用代码中的方法:

protected void ibtnClearFilterTown_Click(object sender, EventArgs e)
{
   RgClientList.MasterTableView.GetColumnSafe("TownCity").CurrentFilterFunction = GridKnownFunction.NoFilter;
   RgClientList.MasterTableView.GetColumnSafe("TownCity").CurrentFilterValue = String.Empty;
   RgClientList.Rebind();

}

另外,根据this question asked on SO,您可能需要在Radgrid上更改以下属性:

EnableLinqExpressions="False"

编辑1 :(将其放入按钮中)

我了解这似乎可以做很多您想做的事,但是我查看了Telerik的文档,但没有看到一种简单的方法,可以简单地从MasterTableView.FilterExpression中删除一个过滤器字符串.这主要是由于每一列将其过滤器存储为文本的方式,而不是最终过滤器字符串中包含的值.

我将指导您完成以下步骤:

>它将为每一列创建一个过滤器集合,删除不需要的过滤器(columnwhosfilteryouwantremoved),然后循环遍历各列并清除要设置的列=“”
>然后将网格的过滤器设置为新值,然后重新绑定.

String MasterFilterExp = "";        

var tempCollection = (from String sFilt in RadGrid1.MasterTableView.FilterExpression.Split(new string[] {"AND"},StringSplitOptions.None)
                   where sFilt.Contains("[columnnameoffilteryouwantremoved]") != true 
                   select sFilt).ToArray();

MasterFilterExp = string.Join(" AND ", tempCollection);

foreach (GridColumn column in RadGrid1.MasterTableView.Columns)
{
    if (column.UniqueName == "columnnameoffilteryouwantremoved")
    {                
        column.CurrentFilterFunction = GridKnownFunction.NoFilter;
        column.CurrentFilterValue = String.Empty;
    }            
}

RadGrid1.MasterTableView.FilterExpression = MasterFilterExp;
RadGrid1.Rebind();                        

它可能可以简化,但是如果您有任何疑问,请告诉我.我对其进行了测试,并能够从网格中删除列的过滤器并重新绑定以显示更新的信息.

标签:telerik,radgrid,asp-net,c,asp-net-mvc
来源: https://codeday.me/bug/20191031/1978262.html