項目中jqGrid因為需求列需要動態隱藏或者顯示多次,這就給添加或者查詢數據造成了一些不便,初步設想表單提交和搜索框根據列的顯示動態改變。
后來找了一下jqGrid的api發現有一個searchGrid的方法,可以搜索非隱藏列的數據。乍一看視乎挺符合需求,也可以減少很多代碼量。
jQuery("#search").jqGrid('searchGrid', { sopt : [ 'cn', 'bw', 'eq', 'ne', 'lt', 'gt', 'ew' ] });
第一步,不管其他官網代碼先一頓CV。點開一看效果不錯。
字段可以選擇,可以選擇比較的類型,字段和值會通過searchField和searchString傳入后端,然后在mybatis中加上
<if test="searchField !=null and searchField !='' and searchString != '' and searchString !=null "> and ${searchField} like '%${searchString}%' </if>
大功告成。
但是問題來了每次表格列改變reload后表格字段不是改變,於是繼續百度searchGrid 重置。好的沒結果出來,一下子懵逼了。
一下子慌了神,沒得借鑒了和CV了。
這下只能看源碼了,點開一看
熟悉的感覺,根本就是天書。
硬着頭皮看了看,發現其實沒有想象中那么難。靜下心來一下子就發現解決問題的代碼了,同時發現查詢也只需要like於是修改了一下js
$("#grid").jqGrid('searchGrid', { recreateFilter:true, sopt : [ 'cn'] });
一下就解決問題了,每次關閉searchGrid后他就會重置。
api中還有很多東西搜索后關閉啊,關閉后重置啊,我們都可以根據需求自己去添加。