2016-12-06 5 views
1

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

$('#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"); 
+2

Если вы не вручную вызываете обновление в сетке, он не должен очищать параметры поиска. Можете ли вы воспроизвести проблему в скрипке с использованием статических данных? –

+0

Да, на странице не так много другого кода, похоже, не перезагружается снова. Конечно, после поиска нужно перезагрузить, чтобы загрузить новые данные. Мне интересно, нужно ли мне передавать данные поиска с сервера клиенту с данными? –

+0

Я сделал скрипку для вас, и ваш код работает нормально: http://jsfiddle.net/ejnrtocw/121/. Примечание: я использовал jqGrid 4.6.0, вы можете попробовать загрузить 4.13.1 в нем –

ответ

2

Free 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 все равно отображают старый фильтр на панели инструментов фильтра. Я опубликовал the old answer, в котором показано, как можно заполнить панель инструментов фильтра на основе текущего используемого фильтра. Новая версия бесплатного jqGrid автоматически обновит панель инструментов фильтра , если используется опция loadFilterDefaults: truefilterToolbar.

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

+0

Обновление новой версии позволило это работать без опции 'loadFilterDefaults: false'. –

+0

@jeffery_the_wind: Это то, что я имел в виду. Новый параметр по умолчанию 'loadFilterDefaults: true' хорош, но первая реализация, представленная в 4.13.1, содержит некоторые ошибки. Исправлены ошибки в более поздних версиях. Поэтому я рекомендую обновить версию 4.13.5. Обходной путь с 'loadFilterDefaults: false' должен использоваться только в том случае, если вы не можете теперь обновлять свой сайт до последнего бесплатного jwGrid. – Oleg

+0

Правильно, я понимаю. Я просто комментировал, поэтому читатели знают, что оба пути будут работать. Вы действительно отлично поработали с вашей вилкой этого пакета. –