Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 拆下单个RadGrid柱的过滤器_C#_Asp.net_Asp.net Mvc_Telerik_Radgrid - Fatal编程技术网

C# 拆下单个RadGrid柱的过滤器

C# 拆下单个RadGrid柱的过滤器,c#,asp.net,asp.net-mvc,telerik,radgrid,C#,Asp.net,Asp.net Mvc,Telerik,Radgrid,我正在使用Telerik RadGrid,并在一些列上设置了自定义过滤器。 作为自定义过滤器(只是一个文本框)的一部分,我还有一个按钮,单击该按钮时,我只想清除该特定列的过滤器值 我让按钮工作,并将特定列的筛选器设置为空字符串,然后重新绑定网格,但这不会删除筛选器值 似乎只有修改grid.MasterTableView.FilterExpression才会影响过滤器,但如何从FilterExpression中仅删除一列的过滤器值 <telerik:RadTextBox ID="RdTxtC

我正在使用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").CurrentFilterFunction = GridKnownFunction.NoFilter;
   RgClientList.MasterTableView.GetColumnSafe("TownCity").CurrentFilterValue = String.Empty;
   RgClientList.Rebind();

}
此外,根据,您可能需要更改Radgrid上的以下属性:

EnableLinqExpressions="False"

编辑1:(将其放入按键)

我知道这看起来很难实现您的愿望,但我查看了Telerik的文档,没有找到一种简单的方法从MasterTableView.FilterExpression中删除一个筛选器字符串。这主要是由于每列将其筛选器存储为文本的方式,而不是最终筛选器字符串中的值

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

  • 它从每一列创建一个筛选器集合,删除您不想要的筛选器(ColumnWhosFilteryYouwantMoved),然后在列中循环并清除您想要设置的列=“”
  • 然后将网格的过滤器设置为其新值,然后重新绑定

    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();                        
    

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

为什么不使用JavaScript尝试一下呢:

function FilterMenuShowing(sender, eventArgs)   
   {     
       if (eventArgs.get_column().get_uniqueName() == "IsPostable")      
       {              
           var menu = eventArgs.get_menu();   
           var items = menu._itemData;   

           var i = 0;   

           while (i < items.length)     
           {     
                   var item = menu._findItemByValue(items[i].value);   
                   if (item != null)   
                       item._element.style.display="none";   
               i++;     
           }
       }
 }
函数过滤器显示(发送方、事件参数)
{     
if(eventArgs.get_column().get_uniqueName()=“IsPostable”)
{              
var menu=eventArgs.get_menu();
变量项=菜单。\u项数据;
var i=0;
while(i

您可以看到详细信息

我没有EnableLinqExpressions,因此添加了该选项,但过滤器仍然不清除。单个列筛选器不清除,但MatterTableView.FilterExpression中仍包含TownCity筛选器值。我想我需要从那里移除它——我可以;不要将其设置为空字符串,因为我仍然希望保留任何其他列筛选器值…哇!谢谢你-我还没有把它绑好,但是看起来它能完成任务。再次感谢。我在下面的回答中加了一点(轻描淡写)。过来看。
function FilterMenuShowing(sender, eventArgs)   
   {     
       if (eventArgs.get_column().get_uniqueName() == "IsPostable")      
       {              
           var menu = eventArgs.get_menu();   
           var items = menu._itemData;   

           var i = 0;   

           while (i < items.length)     
           {     
                   var item = menu._findItemByValue(items[i].value);   
                   if (item != null)   
                       item._element.style.display="none";   
               i++;     
           }
       }
 }