ASP.NET MVC3: WebGrid + Filtros Ajax + Ajax Sorting & Paging

Basicamente, estou usando o WebGrid e preciso filtrar os resultados. O primeiro problema que tenho aqui é que é a primeira vez que uso o WebGrid e esperava que alguns de vocês pudessem me ajudar … Até agora, consegui classificar os resultados da grade e filtrá-los com o Ajax, mas, quando reclassificando os resultados filtrados, o subconjunto é perdido e volto ao início com o conjunto completo de resultados. Eu sei porque está acontecendo, é claro, mas não sei como fazer isso funcionar.

Exemplo:

Na minha opinião:

@model IQueryable @section MoreScripts {  } @using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "GridData"})) { 
Search Filters
Name
@Html.TextBox("Name")

}
@Html.Partial("Grid", Model)

Minha visão parcial:

 @model IQueryable @{ var grid = new WebGrid(null,rowsPerPage: 5, defaultSort: "Nombre", ajaxUpdateContainerId: "GridData"); grid.Bind(Model, autoSortAndPage: true, rowCount: Model.Count()); @grid.GetHtml(columns: grid.Columns( grid.Column("Name", "Name", canSort: true), grid.Column("CreationDate", "Creation Date", canSort: true), grid.Column("Active", "Active", canSort: true, format: @), grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { id = item.Id }, new { @class = "editLink smallCell", @title = "Edit" })), grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", new { id = item.Id }, new { @class = "deleteLink smallCell", @title = "Delete" }))), tableStyle: "webgrid", headerStyle: "webgrid-header", footerStyle: "webgrid-footer", alternatingRowStyle: "webgrid-alternating-row", selectedRowStyle: "webgrid-selected-row", rowStyle: "webgrid-row-style"); } 

E finalmente o que estou fazendo errado está aqui, no meu controle:

  public ActionResult Index() { return View(repository.GetAllRecords().OrderByDescending(f => f.CreationDate)); } [HttpPost] public ActionResult Index(string name) { var data = repository.GetAllRecords(); if(!string.IsNullOrEmpty(name)) data = data.Where(a => a.Name.Contains(name)); data = data.OrderByDescending(f => f.CreationDate); return PartialView("Grid", data); } 

Eu também estou usando uma class WebGrid: WebGrid como visto aqui: http://archive.msdn.microsoft.com/mag201107WebGrid/Release/ProjectReleases.aspx?ReleaseId=5667

Então, isso funciona muito bem para filtragem, mas quando você obtém os resultados filtrados e tenta alterar a ordem de sorting de seus resultados de pesquisa reduzidos, você perde os elementos e o valor do parâmetro ‘name’ porque o WebGrid executa novamente a primeira ação do controlador . Provavelmente esta não é a melhor abordagem, mas como eu disse, nunca usei o WebGrid, então estou disposto a aprender. Qualquer ajuda seria muito apreciada. Obrigado.