2010-01-26 12 views
8

Ho una griglia che consente all'utente di filtrare. Se l'utente modifica la parola di ricerca utilizzata per popolare la griglia, il filtro della ricerca precedente rimane al suo posto.Come cancellare il filtro su Telerik ASP.NET MVC Grid

<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> 

Ho attivato il rebind della catena che si verifica quando btnSearch viene premuto.

<% 
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 
      }); 
     }); 
    <% 
}); 

%>

So che posso aggiungere il seguente codice che porterà il menu del filtro, ma preferirei essere in grado di cancellare automagically il filtro prima o dopo la .rebind () si verifica una chiamata.

$('.t-grid-filter:first') 
    .trigger('click'); 
+0

solo cercando di capire cosa si sta chiedendo: si desidera cancellare il filtro e quindi ricollegare la griglia quando si fa clic su Cerca? –

+0

Corretto ... Fondamentalmente voglio che il filtro che è stato applicato sia cancellato ogni volta che clicco sul pulsante btnSearch, ec. – RSolberg

risposta

3

Con korchev's ispirazione ... Ho trovato il seguente che viene eseguito prima che si verifichi il rebind. Cancella i valori del filtro e quindi applica i nuovi valori (inesistenti).

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

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

È possibile controllare la mia risposta here.

+0

Grazie! Molto apprezzato. – RSolberg

+0

Il codice cancella in effetti il ​​valore del filtro della casella di testo, ma in realtà non cambia il filtro dietro la scena. Penso che dovrò anche simulare il clic sul pulsante del filtro effettivo affinché funzioni. Per favore fatemi sapere quando la correzione ufficiale potrebbe essere pronta! – RSolberg