Фильтр jqgrid удаляет одну строку при загрузке один раз - PullRequest
1 голос
/ 05 октября 2011

Я построил одну сетку, используя jqgrid, и я включил фильтрацию. Полученный тип данных - json, и я использую функцию loadonce. Когда я применяю некоторые фильтры, оказывается, что он всегда прячется на записи. Я использую пейджер сетки только для того, чтобы иметь дополнительные кнопки, которые я хочу добавить в сетку, и я удаляю кнопки сетки пейджер (следующий, последний и т. Д.). Я удалил пейджер, чтобы увидеть, был ли конфликт, но все равно я получаю ту же ошибку. Когда сетка загружается, я получаю «View 1 - 7 of 7», и я вижу 7 записей, когда я применяю фильтр, вывод «View 1 - 3 of 4». Это означает, что 4 записи соответствуют фильтру, но он продолжает отображать только 3. Теперь, если я очищаю фильтры, я получаю «Просмотр 1 - 6 из 7», снова одна запись отсутствует. Я проверил таблицу с помощью firebug, чтобы убедиться, что запись скрыта, но все равно ничего. Я пробовал Firefox, Chrome, IE и во всех браузерах я получаю ту же ошибку. Версия jqgrid - 4.1.1. Любые подсказки, почему это происходит?

Ниже вы можете увидеть код:

jq($grid).jqGrid({
    url: $url,
    datatype: 'json',
    mtype: 'Get',
    colNames: colNamesList,
    colModel: $colModel,
    jsonReader : {
        repeatitems:false,
        id: "id",
    },
    rowNum: -1, 
    width: jq(document).width()-20,
    height: 200,
    pager: $pagerId,
    viewrecords: true,
    fixed: true,
    shrinkToFit: false,
    loadonce: true, 
    caption: $caption,
    beforeRequest: function(){
        if (!initialized) {
            jq(blockElement).block({ message: '<h1 class="loadingMsg">Grid is loading, please wait...</h1>' });
        }
    },
    loadComplete: function(data){
        if (loadCompleteCallback != null){
            loadCompleteCallback(data);
        }

        if (!initialized) {
            jq.jGrowl('"' + $caption + '" Grid loaded.', {header:'Load Notification'});
            jq(blockElement).unblock();
            initialized = true;
        }
    }
});

        if (!initialized) {
            jq.jGrowl('"' + $caption + '" Grid loaded.', {header:'Load Notification'});
            jq(blockElement).unblock();
            initialized = true;
        }
    }
});

jq($grid).jqGrid('filterToolbar',{
    stringResult: true,
    searchOnEnter : false
});

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

1 Ответ

5 голосов
/ 05 октября 2011

Не понимаю следующее: почему вы возвращаете с сервера одну строку, которую вы никогда не хотите показывать ? Не проще ли удалить данные уже на стороне сервера? Если это невозможно, вы можете удалить строку внутри loadComplete. Кстати, в текущем коде я не вижу, где вы устанавливаете пользовательский фильтр, который делает одну строку сетки невидимой.

Еще одно замечание: вы никогда не должны использовать rowNum: -1. Допускаются только положительные значения (например, rowNum: 10000). Это особенно важно, если вы используете loadonce: true, который изменяет значения от datatype до 'local' после первого заполнения сетки. Использование отрицательного rowNum не допускается.

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