Фильтрация с помощью пользовательского текстового поля или выбор значений элемента управления с помощью jqgrid.lib.web.mvc

Я пытаюсь настроить пользовательский поиск, используя некоторые input type="text" а также select элементы управления для предоставления значений для публикации с использованием ajax в ActionResult MethodName(JqGridRequest request, PerfilSearchViewModel viewModel) помощника и применить логику фильтрации этого.

Я заметил JqGridRequest request.search свойство помощника на стороне сервера отправляется только true когда встроенный jqgridsearch 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, Ваша библиотека великолепна!, но ей не хватает документации, было бы неплохо найти способ создать достаточно глубокие и выборочные ссылки, чтобы она могла быть более популярной и лучше использоваться со всеми ее широкими возможностями.

Другие вопросы по тегам