Конфигурация диалога множественного поиска jqGrid

#jquery-ui #search #jquery-plugins #jqgrid

#jquery-пользовательский интерфейс #Поиск #jquery-плагины #jqgrid

Вопрос:

Я столкнулся с проблемой с множественным поиском jqgrid (серверная часть php). В диалоговом окне поиска не отображается » » (добавить фильтр), пока я не нажму на кнопку сброса…

Это код:

 jQuery("#poi_grid").jqGrid({ 
    url:'php/retrieve_pois.php', 
    datatype: "json", 
    colNames:['Name', 'Region', 'Type','Website','PDF','Lat','Lon'], 
    colModel:[ 
        {name:'name',index:'name', width:150}, 
        {name:'region',index:'region', width:70}, 
        {name:'type',index:'type', width:70}, 
        {name:'website',index:'website', width:90,sortable:false,search:false}, 
        {name:'pdf',index:'pdf', width:150,align:"right",sortable:false,search:false}, 
        {name:'lat',index:'lat', width:60, sortable:false,search:false}, 
        {name:'lon',index:'lon', width:60, sortable:false,search:false},
    ], 
    pager:'#pager',
    rowNum:20, 
    rowList:[20,30,50], 
    sortname: 'name', 
    viewrecords: true, 
    sortorder: "asc"
}); 
//Pager
jQuery("#poi_grid").jqGrid('navGrid','#pager',
    {edit:false,add:false,del:false,search:false,refresh:false}
)
//Custom buttons
.navButtonAdd('#pager',{
    caption:"",
    title:"Search", 
    buttonicon:"ui-icon search", 
    onClickButton: function(){ 
        jQuery("#poi_grid").jqGrid('searchGrid', 
            {sopt:['eq','ne','cn','bw','bn']},
            {multipleSearch:true}
        );
    }, 
    position:"last"
 });
  

Это то, что я получаю, когда открываю диалоговое окно поиска (поиск работает нормально, но у меня нет возможности добавить другой фильтр):

Когда я нажимаю на кнопку rest в левом нижнем углу диалогового окна (даже без предварительного поиска) Я вижу «правильную» структуру диалога … и поиск по нескольким фильтрам работает:

Как решить и получить полное диалоговое окно, не нажимая на сброс? Заранее благодарю вас

Ответ №1:

Вы допустили ошибку при вызове searchGrid . Вместо

 jQuery("#poi_grid").jqGrid('searchGrid', 
       {sopt:['eq','ne','cn','bw','bn']},
       {multipleSearch:true}
);
  

вы должны использовать

 jQuery("#poi_grid").jqGrid('searchGrid', 
       {sopt:['eq','ne','cn','bw','bn'], multipleSearch:true}
);
  

Проблема, которую вы описываете с помощью кнопки «Сброс», — это просто ошибка в поиске по одному полю в jqGrid (подробнее здесь). Из-за неправильного использования searchGrid этой multipleSearch:true опции будет проигнорирован, и диалоговое окно поиска будет использоваться как поиск по одному полю.

Ответ №2:

Посмотрите на это.

 jqGridObj = $('#poi_grid');

jqGridObj.navButtonAdd('#'   jqGridObj[0].id   '_toppager_left',{
    caption:"",
    title:"Search", 
    buttonicon:"ui-icon-search", 
    onClickButton: function(){ 
        jqGridObj.jqGrid('searchGrid', 
            {sopt:['eq','ne','cn','bw','bn'], multipleSearch:true, showQuery: true}
        );
    }, 
    position:"last"
 });