微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jquery – 如何为jqGrid单搜索字段设置默认值

我需要在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).因此,认情况下,选项列将在内部填充.另一方面,可以覆盖选项列以具有搜索字段的自定义顺序.

您在问题文本中包含的代码生成了以下搜索对话框

填充选项列后,您可以将其更改为例如以下内容

相应的演示是here.代码中最重要的部分如下

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中指定具有搜索规则的过滤器(请参阅相同的答案).

原文地址:https://www.jb51.cc/jquery/180689.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐