Фильтрация с помощью пользовательского текстового поля или выбор значений элемента управления с помощью jqgrid.lib.web.mvc
Я пытаюсь настроить пользовательский поиск, используя некоторые input type="text"
а также select
элементы управления для предоставления значений для публикации с использованием ajax в ActionResult MethodName(JqGridRequest request, PerfilSearchViewModel viewModel)
помощника и применить логику фильтрации этого.
Я заметил JqGridRequest request.search
свойство помощника на стороне сервера отправляется только true
когда встроенный jqgrid
search icon
используется.
Я настроил и проанализировал примеры из http://tpeczek.codeplex.com/documentation, но мне еще предстоит заставить их работать без использования стеклянного значка, так как без него нет образца.
Вот еще один: Как передать объект jQuery в качестве параметра в jqGrid, используя пространство имен lib.web.mvc, где создается объект для публикации на сервере, но так как свойство поиска запроса является false
также используя другую кнопку и элементы управления, я не могу использовать фильтрующую часть помощника.
Я ценю, если кто-нибудь может показать мне способ реализации фильтрации с помощью моих пользовательских элементов управления поиском.
Благодарю вас.
Обновление: мне удалось добиться прогресса в настройке функции javascript, которая позволяет мне контролировать выполнение персонализированного поиска по нажатию моей кнопки:
function mySearch() {
$('#profiles').jqGrid('setGridParam', { search: true });
$('#profiles').trigger("reloadGrid", [{ page: 1, current: true }]);
}
И на Lib.Web.Mvc JQGrid
Помощник У меня есть параметр для публикации значения с помощью этого:
postDataScript: "{ Name: 'profile'}"
Последнее, конечно, является статическим значением, поэтому я знаю, что могу использовать этот вариант, чтобы сделать его динамичным:
postDataScript: "function() { return { Name: $('#filter').val() }; }"
Для статического значения работает, но для динамического значения вызывается с val()
всегда нулевой на контроллере.
Подскажите, пожалуйста, как мне получить опубликованное значение?
1 ответ
Большое спасибо @tpeczek, я не смог увидеть ваш ответ, но после того, как я просмотрел и прочитал еще некоторое время, мне удалось выполнить требование. Я сделал это:
1) Я прикрепил событие для запуска поиска в сетке с именем "profile" с помощью функции:
function search() {
$('#profiles').jqGrid('setGridParam', { search: true });
$('#profiles').trigger("reloadGrid", [{ page: 1, current: true }]);
}
//attaching the function
$(document).ready(function () {
$('#btnSearch').click(function () {
search();
});
});
2) Затем я создал экземпляр вашего помощника Grid и передал модель JQGrid
значения с использованием postDataScript
атрибут:
var grid = new Lib.Web.Mvc.JQuery.JqGrid.JqGridHelper<MyProject.Model.ViewModel.ProfileFormattedViewModel>("profiles",
caption: "profiles",
cellLayout: 5,
dataType: Lib.Web.Mvc.JQuery.JqGrid.JqGridDataTypes.Json,
footerEnabled: true,
methodType: Lib.Web.Mvc.JQuery.JqGrid.JqGridMethodTypes.Post,
pager: true,
rowsList: new List<int> { 10, 20, 30, 40, 50 },
rowsNumber: 10,
loadOnce: false,
width: 750,
sortingName: "Sorting_Field",
sortingOrder: Lib.Web.Mvc.JQuery.JqGrid.JqGridSortingOrders.Desc,
url: Url.Action("Grid", "Profile"),
userDataOnFooter: false,
viewRecords: true,
postDataScript: "{ 'Name': function () { return $('#filter').val(); } , 'State': function () { return $('#state').find('option:selected').val(); } }"
).Navigator(new Lib.Web.Mvc.JQuery.JqGrid.JqGridNavigatorOptions() { Search = true });
3) Это дало мне возможность активировать функцию поиска на JQGrid
использование значка "увеличительное стекло", встроенного в сетку, поэтому JqGridRequest
request.Searching свойство равно true и мой ProfileSearchViewModel
имеет значения своего свойства, загруженные с данными, переданными с PostDataScript
атрибут, когда оба свойства находятся в одинаковом порядке:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Grid(JqGridRequest request, ProfileSearchViewModel viewModel)
//equals true
if (request.Searching) {
if (viewModel != null)
filterExpression = ViewModel.GetFilterExpression();
//etc... (as your sample application goes)
}
@tpeczek, Ваша библиотека великолепна!, но ей не хватает документации, было бы неплохо найти способ создать достаточно глубокие и выборочные ссылки, чтобы она могла быть более популярной и лучше использоваться со всеми ее широкими возможностями.