我需要在jqGrid单搜索对话框中设置默认列选择.
可用选项在the jqGrid wiki中描述
要设置默认搜索“类型”选项,我首先在数组中重新排序带有我需要的值(“包含”,“cn”)的“sopt”数组,并在navGrid搜索选项中设置它.尽管浏览了源代码,我还是无法确定哪个属性可能会影响初始字段选择.它总是默认为我的colModel中的第一列.
我的代码是:
$('#tableid').jqGrid({ colNames: ['ID','Membership#','Join Date','Email','Name','Address','Postcode'],colModel: [ {name:'ID',index:'ID',hidden:true },{name:'MEMID',index:'MEMD',width:90 },{name:'JOINDATE',index:'JOINDATE',width:70 },{name:'EMAIL',index:'EMAIL',width:150,align:"right" },{name:'NAME',index:'NAME',width:120,{name:'ADDRESS',index:'ADDRESS',width:250,{name:'POSTCODE',index:'POSTCODE',width:80,align:"right" } ],// etc. ... }); $("#tableid").jqGrid('navGrid','#pager',{ /* parameters */ edit:false,add:false,del:false,searchtext:'Find ',refreshtext:'Refresh ' },{ /* edit options */ },{ /* add options */ },{ /* delete options */ },{ /* search options */ multipleSearch:false,multipleGroup:false,showQuery:false,top: 190,left: 200,caption: "Search for members...",closeAfterSearch: false,sopt: ['cn','nc','eq','ne','lt','le','gt','ge','bw','bn','in','ni','ew','en'],},{ /* view options */ } );
解决方法
这是一个很好的问题! jqGrid包含可用于实现您的需求的选项列,但该选项的使用并不简单.所以我为你做了演示.
没有记录The option列搜索对话框,因为它不是真正用户友好的.选项列可以包含colModel项的数组.确切地说,相同顺序的项目将用于构造具有列名称的下拉选择.默认情况下,jqGrid填充列包含colModel的所有项目,这些项目没有search:false属性.对于隐藏列(隐藏:true),它将另外测试searchoptions.searchhidden属性(参见源代码的the part).因此,默认情况下,选项列将在内部填充.另一方面,可以覆盖选项列以具有搜索字段的自定义顺序.
填充选项列后,您可以将其更改为例如以下内容
var $grid = $('#tableid'),getColumnByName = function (colName) { var colModel = $.extend([],this.jqGrid("getGridParam","colModel")),colNames = $.extend([],"colNames")),l = colModel.length,i,cm; for (i = 0; i < l; i++) { cm = colModel[i]; if (cm.name === colName) { cm.label = cm.label || colNames[i]; return cm; } } }; $grid.jqGrid({ colNames: ['ID',colModel: [ {name: 'ID',hidden: true },{name: 'MEMID',width: 90 },{name: 'JOINDATE',width: 70 },{name: 'EMAIL',width: 150,align: "right" },{name: 'NAME',width: 120,{name: 'ADDRESS',width: 250,{name: 'POSTCODE',width: 80,align: "right" } ],... }); $grid.jqGrid('navGrid',{ /* search options */ ... columns: [ getColumnByName.call($grid,'NAME'),getColumnByName.call($grid,'EMAIL'),'JOINDATE'),'MEMID'),'ADDRESS'),'POSTCODE') ] },{ /* view options */ } );
更新:单值搜索中存在小错误(multipleSearch:true未设置)和列设置选项.在the answer中,我描述了如何修复错误.或者,您可以使用multipleSearch:true选项并在postData中指定具有默认搜索规则的过滤器(请参阅相同的答案).