簡體   English   中英

刪除單個RadGrid列的過濾器

[英]Remove the filter for a single RadGrid column

我正在使用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();

}

另外,根據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(); 

它可以簡化,但如果您有任何問題,請告訴我。 我測試了它,並能夠從網格中刪除列的過濾器並重新綁定以顯示更新的信息。

你為什么不試試Javacript:

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++;     
           }
       }
 }

你可以在這里看到細節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM