Веб-сетка с отфильтрованными результатами - PullRequest
0 голосов
/ 30 мая 2011

Мне нравится HTML-помощник Webgrid в Razor-ViewEngine.

К сожалению, я столкнулся с проблемой. Используя встроенные функции сортировки и разбивки на страницы, я теряю настройки фильтра.

Над сеткой у меня есть filtercontrol (форма), который фильтрует строки, показанные в сетке, заполняя класс фильтра и вызывая метод действия на контроллере при отправке.

Код в контроллере:

public ActionResult DeliveryContractList(SampleClassFilter filter){

   // Populate a filtered List of Items to Show    
   IList<SampleClass> model = FillList(filter);

   // Return a View with the List.
   return View("SampleClassList", model);

}

Вид:

  @model IEnumerable<SampleClass>
  @{
      ViewBag.Title = "SampleClassList";
  }

  @using(Html.BeginForm()){
        // Form to Set the Filter
        ...
  }

  <div id = "SampleClassList">

    var grid = new WebGrid(Model, canPage: true, canSort: true, ajaxUpdateContainerId: "SampleClassList");

    @grid.GetHtml(htmlAttributes: new {id = "gridSampleClass"}, columns:
        grid.Columns(
            grid.Column("Foo", "For", canSort: true),
            grid.Column("Bar", "Bar", canSort: true),
        )
     ); 
</div>

Я понял, что при нажатии, например, также вызывается заголовок столбца сетки для сортировки метода действия в контроллере. Конечно, класс фильтра равен нулю, что приводит к нефильтрованному набору результатов.

Есть ли способ сохранить мои результаты отфильтрованными при сортировке или разбивке по страницам веб-сетки? Я не хочу использовать jquery !!!

Заранее спасибо Tobi


Можно ли определить параметры, добавляемые в ссылку, вызываемую при нажатии на ссылку сортировки или страницы?

1 Ответ

0 голосов
/ 22 июня 2012

Ах, ха. Проблема в том, что вам нужно добавить форму GET вокруг полей фильтра и веб-сетки. А затем вам нужно сделать немного массива данных веб-сетки, чтобы она отправляла информацию о сортировке обратно таким образом, чтобы она распознавала. Я потерял ссылку на статью, которую я прочитал об этом, но у меня есть пример здесь: ASP.NET MVC3 WebGrid - пользовательская сортировка на стороне сервера

Вы получите URL-адреса, такие как localhost / example / admin / thing? ThingName = Hyatt & City = & State = TX & Country = & sort = city & sortdir = ASC

...