缺少jqGrid搜索框“大于”和“小于”

时间:2012-02-05 03:09:23

标签: jqgrid

我如何拥有大于或小于搜索框?

下面是我的搜索代码:

{multipleSearch:true}

搜索框仅显示此内容 Searchbox

我是否需要为jgGrid设置设置以将字段日期识别为日期?似乎它被视为文本。

下面是我的日期colModel

{name:'date', index:'date', width:90, editable:false, align:"center", editrules:{required:true}}

1 个答案:

答案 0 :(得分:7)

自jqGrid中引入新过滤器模块以来,您所描述的行为已存在。默认行为有点过于复杂,无法在"默认"来自the options of searching的表格列。

如果你检查jqGrid的源代码,你会发现以下two lines

numopts : ['eq','ne', 'lt', 'le', 'gt', 'ge', 'nu', 'nn', 'in', 'ni'],
stropts : ['eq', 'ne', 'bw', 'bn', 'ew', 'en', 'cn', 'nc', 'nu', 'nn', 'in', 'ni'],

因此,如果您在searchoptions中为jqGrid的某些列定义了sopt属性,您将看到相应的比较操作。您可以设置默认

如果您将其他sorttype值定义为默认值'string',则数字选项将用作比较操作。仅针对未定义的sorttype,未定义的searchoptions.sopt和未定义的搜索navGrid选项prmSearch的选项,将使用您描述的行为。

因此,您可以在表单

中使用navGrid
$('#grid').jqGrid('navGrid', '#pager',
    {refreshstate: 'current', add: false, edit: false, del: false}, {}, {}, {},
    {sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge', 'bw', 'bn', 'ew', 'en', 'cn', 'nc', 'nu', 'nn', 'in', 'ni']}
);

另一种可能性是直接为'日期'定义searchoptions.sopt。柱:

{name: 'date', index: 'date', width: 90, align: "center", editrules: {required: true},
    searchoptions: {sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge']}}

您可以根据内部数据的类型包含您希望对相应列的所有操作。

我真正建议您使用column templates。在我为客户开发的项目中,我在一个JavaScript文件中定义,我在所有页面中包含不同类型数据的不同模板。例如

var initDate = function (elem) {
        $(elem).datepicker({
            dateFormat: 'dd-M-yy',
            autoSize: true,
            changeYear: true,
            changeMonth: true,
            showButtonPanel: true,
            showWeek: true
        });
    },
    dateTemplate = {width: 80, align: 'center', sorttype: 'date',
        formatter: 'date', formatoptions: { newformat: 'm/d/Y' }, datefmt: 'm/d/Y',
        editoptions: {date: true, dataInit: initDate },
        searchoptions: { sopt: ['eq', 'ne', 'lt', 'le', 'gt', 'ge'], dataInit: initDate }};

如果您已定义dateTemplate变量,则可以像

一样使用它
{name:'date', index:'date', editrules: {required: true}, template: dateTemplate }