Бесплатный параметр поиска jqGrid, исчезающий в filterToolbar

Я использую версию 4.13.1 freejqGrid. Я просто добавил код для панели инструментов фильтра, которая работает, за исключением того, что параметр поиска исчезает после поиска. Поиск работает и все, но я хотел бы оставить этот текст на панели инструментов, пока не будет очищен с помощью (х).

$('#jqGrid_destroyed').jqGrid({
    url:'/url.php',
    height: 'auto',
    shrinkToFit: true,
    width: Math.floor($(window).width()*1),
    datatype: 'json',
    mtype: 'POST',
    colNames:[
        'Flat ID',
        'Customer',
        'Flat #',
        'MiscCode',
        'Item Number',
        'Item Description',
        'plus',
        'RevDate',
        'Created Date',
        'Plate/Flat in QA',
        'Computer Files to Waiting Destruct',
        'Plates/Flat Destroyed',
        'Date Confimation Sent to Customer'
    ],
    colModel:[
        {name:'flat_id',hidden:true},
        {width:14,name:'Customer'},
        {width:10,name:'flat_plate_num'},
        {width:13,name:'MiscCode'},
        {width:20,name:'item_number'},
        {width:45,name:'item_description'},
        {width:12,name:'plus'},
        {width:16,name:'revdate'},
        {width:22,name:'created_date', align: "right", hidden:true},
        {width:17,name:'flat_in_qa'},
        {width:20,name:'computer_files_to_waiting_destruct'},
        {width:25,name:'flat_destroyed'},
        {width:20,name:'date_confimation_sent_to_customer', formatter : 'date', formatoptions : {srcformat: "Y-m-d", newformat:"m/d/Y"}}
    ],
    sortname: 'date_confimation_sent_to_customer',
    sortorder: 'desc',
    viewrecords: true,
    gridview: true,
    caption: 'Waiting Destruct',
    rowNum: 10000,
    pager:true,
    searching: { defaultSearch: "cn" }
}).jqGrid("filterToolbar");

1 ответ

Решение

В бесплатной jqGrid 4.13.1 появилась новая функция - заполнение панели инструментов фильтра на основе postData.filters, Смотрите README4.13.1. У функции были некоторые ошибки, которые существуют в вашем случае. Ошибки исправлены в более поздней версии бесплатной jqGrid.

Можно отключить функцию по использованию loadFilterDefaults: false (по использованию .jqGrid("filterToolbar", {loadFilterDefaults: false}) или лучше, изменив searching: { defaultSearch: "cn" } в searching: { defaultSearch: "cn", loadFilterDefaults: false }). С другой стороны, я бы порекомендовал вам обновить до текущей выпущенной версии бесплатной jqGrid: 4.13.5 или использовать последние источники из GitHub.

Опция поиска loadFilterDefaults: false очень практично во многих сценариях. Например, можно использовать как панель инструментов фильтра, так и диалог поиска. Если вы установите фильтр на панели инструментов фильтра, а затем откроете диалоговое окно поиска, вы увидите текущий фильтр в диалоговом окне. Вы можете изменить его и применить новый фильтр. Сетка покажет новый фильтр, но старые версии jqGrid по-прежнему будут отображать старый фильтр на панели инструментов фильтра. Я разместил старый ответ, который показывает, как можно заполнить панель инструментов фильтра на основе текущего используемого фильтра. Новая версия бесплатной jqGrid обновит панель инструментов фильтра автоматически, если по умолчанию loadFilterDefaults: true вариант filterToolbar используется.

Есть и другие распространенные сценарии, в которых loadFilterDefaults: true было бы полезно. Можно, например, загрузить все данные JSON с сервера, используя loadonce: true вариант. Бесплатная jqGrid позволяет комбинировать loadonce: true вариант с forceClientSorting: true, которые применяют локальную сортировку и фильтрацию, прежде чем данные будут отображаться в сетке. Это позволяет загружать все данные, но отображать только отфильтрованные и отсортированные данные с локальной подкачкой данных. Для фильтрации данных нужно просто установить filters собственностью postData, По использованию filterToolbar по умолчанию loadFilterDefaults: true Вариант один увидит применяемый в настоящее время фильтр, который может быть полезен для пользователя.

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