如何清除Telerik ASP.NET MVC Grid上的筛选器

8

我有一个允许用户筛选的网格。如果用户更改用于填充网格的搜索词,以前搜索的过滤器仍然保留。

<label for="UserName"> 
    User Name:</label> 
<%= Html.TextBox("UserName", "") %> 
&nbsp; &nbsp; 
<input id="btnSearch" type="submit" value="Submit" /> 
</p> 
<div class="<%= "t-" + Html.GetCurrentTheme() %>" style="width: 400px;"> 
<%= Html.Telerik().Grid<ADGroup>()       
        .Name("Groups") 
        .Columns(columns=> 
        { 
            columns.Add(c => c.GroupName).Width(350); 
        }) 
        .Sortable() 
        .Filterable() 
        .Pageable(paging => 
            paging.PageSize(20) 
        ) 
        .Ajax(ajax => ajax.Action("_GetGroups", "GroupSearch", new { userName = "John Doh" })) 
        .BindTo((IEnumerable<ADGroup>)ViewData["Groups"]) 
%> 
</div> 

当btnSearch被按下时,我已经触发了网格的重新绑定。

<% 
Html.Telerik().ScriptRegistrar() 
    .OnDocumentReady(() =>  
    { 
    %> 
    var groupsGrid = $('#Groups').data('tGrid'); 
    $('#btnSearch') 
        .live("click", function() { 
            var user = $('#UserName').val(); 
            // rebind the related grid 
            groupsGrid.rebind({ 
                userName: user 
            }); 
        }); 
    <%  
}); 

我知道如果加入下面的代码,可以打开过滤菜单,但是我更希望能够在 .rebind() 调用之前或之后自动清除筛选器。

%>

(这句话为无效字符,请确认是否需要翻译)
$('.t-grid-filter:first') 
     .trigger('click'); 

只是想了解您的问题:您想在单击搜索时清除过滤器,然后重新绑定网格吗? - Jon Erickson
正确的... 我基本上想要应用的过滤器在我点击btnSearch按钮时被清除,等等。 - RSolberg
2个回答

4

korchev的启发下,我想出了以下方案,在重新绑定之前执行。它清除筛选器的值,然后应用新的(不存在的)值。

//Clear UI Filter Text
$('#Groups .t-clear-button').click();
$('#Groups .t-filter-button').click();

// rebind the related grid
groupsGrid.rebind({
    userName: user
});

2
您可以在这里查看我的回复。

代码确实清除了文本框过滤器的值,但它并没有实际改变背后的过滤器。我想我还需要模拟实际过滤器按钮的点击才能使其工作。请告诉我何时会准备好官方修复! - RSolberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接