Лучший способ отфильтровать представление списка в asp.net MVC - PullRequest
1 голос
/ 22 января 2010

У меня есть список данных, поступающих из базы данных и отображаемых в таблице, который работает именно так, как я хочу.

Что я хотел бы сделать, так это добавить DropDownList на страницу, которая «фильтрует» данные в таблице на основе значения выбранного элемента в DropDonwList.

Например, DropDown имеет эти значения

Assigned To Me
Assigned To Others

и список данных, имеет поле "assignTo". Когда значение в раскрывающемся списке изменяется, я хотел бы обновить список данных.

В WebForms я бы использовал UpdatePanel и DropDownList с autoPostBack = True, как я могу получить такой же эффект в MVC?

Ответы [ 2 ]

3 голосов
/ 22 января 2010

Вы используете JavaScript / jQuery для привязки к событию onchange / onclick и выполняете обратную передачу:

$(function() {
   $("#myelement").click(function(){
      $("#secondelement").load('<%= Url.Action("Source") %>?selected=' + $(this).val());
   });
}

Существуют плагины jQuery, которые делают подобные вещи, например http://dev.chayachronicles.com/jquery/cascade/index.html (не самый лучший, первый, который я нашел).

0 голосов
/ 22 января 2010

У вас есть несколько вариантов. Одним из способов является создание метода Controller, который управляет процессом сбора ваших данных (скажем, как IList), а затем использует метод Json (...) Controller для его сериализации и отправки обратно в виде JsonResult (вот пример : http://weblogs.asp.net/mehfuzh/archive/2009/04/28/using-of-json-result-in-asp-net-mvc-1-0.aspx).

В вашем интерфейсе вы можете подключить некоторый javascript в раскрывающемся списке, который использует jQuery для создания $ .get (http://api.jquery.com/jQuery.get/), передающего идентификатор своего рода для определения критериев фильтра.

Затем вы используете функцию обратного вызова вызова $ .get (...), чтобы манипулировать вашей DOM, как считаете нужным, для визуального отображения нового списка данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...