как показать отфильтрованный jqgrid с панелью инструментов поиска, предварительно заполненной с помощью одного вызова для извлечения данных - PullRequest
0 голосов
/ 26 ноября 2011

Я ищу способ показать jqgrid с предварительно заполненной панелью инструментов поиска и данными, отфильтрованными этой панелью инструментов.Я попробовал код ниже, но это делает два запроса на получение данных.Первый запрос извлекает нефильтрованные данные, и только второй запрос извлекает правильные данные.

Как исключить первый запрос, чтобы отфильтрованные данные были извлечены, а панель инструментов поиска была предварительно заполнена немедленно?

var grid = $("#grid"),
    notLoaded= true;
grid.jqGrid({
datatype: "json",
mtype: 'POST',
   loadComplete: function() { 
     $("#gs_Name").val('<%= Request.QueryString["Name"] %>');
     if (notLoaded) {
       setTimeout( function() {
         $("#grid")[0].triggerToolbar();
         }, 100 );
       notLoaded = false;
       }
     }
 });

Обновление

Я пытался заполнить панель инструментов поиска, используя критерии поиска, переданные из строки запроса

$(function () {
    var grid = $("#grid"),
        urlFilters;
    var namedParameters = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'),
        parameters = {}, 
        nameAndValue, 
        i; 
    for (i = 0; i < namedParameters.length; i += 1) { 
        nameAndValue = namedParameters[i].split('='); 
        parameters[nameAndValue[0]] = decodeURIComponent(nameAndValue[1]); 
        if (nameAndValue[0] === "filters") { 
            urlFilters= decodeURIComponent(nameAndValue[1]); 
        } 
    } 

    grid.jqGrid({
     postData: { filters: urlFilters }, 
     search:true, 
     loadComplete: function() { 
         refreshSearchingToolbar( $(this), 'eq');
         }
     ...

Панель инструментов поиска пуста, если сетка загружена, но сетка отфильтрована и диалоговое окно поиска заполнено.должным образом.Панель инструментов поиска также заполняется, если открыто диалоговое окно поиска.

Отладчик показывает, что в условии refreshSearchingToolbar

if (typeof (postData.filters) === "string" &&
                        typeof ($grid[0].ftoolbar) === "boolean" && $grid[0].ftoolbar) {

, если не выполняется: ftoolbar не определен.Я удалил эту проверку, но после этого получил ошибку в строке tagName = control[0].tagName.toUpperCase(); о неопределенном tagName Как это исправить?

1 Ответ

2 голосов
/ 27 ноября 2011

Вы должны создать jqGrid с параметрами search: true и postData: {filters: theFilterAsJSON}.Смотрите ответ , этот из этот для деталей.

ОБНОВЛЕНО: Ответ показывает, как анализироватьpostData.filters и заполните поля панели инструментов поиска (когда это возможно) соответствующими фильтрами.

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