【问题标题】:How to make the "jqGrid toolbar search" search for the at in any occurrence, not just the beginning如何使“jqGrid 工具栏搜索”在任何出现时搜索 at,而不仅仅是开始
【发布时间】:2015-11-09 12:34:27
【问题描述】:

我已经实现了一个启用了工具栏搜索的 jqGrid。 问题是搜索的工作方式类似于“%search_criteria”(仅从头开始匹配) 但我需要它像 '%search_criteria%' (列值中的任何出现)。

例如:网格有一个“类”列,其值为:Math-101 和 Math-102 如果搜索:“101”==> 得到零匹配。 我必须搜索整个单词“Math-101”。

我看到了一个我不会工作的示例,它与我的 Grid 没有什么不同,我不知道它在下面的示例中是如何工作的,而不是在我的示例中! 例如:http://www.ok-soft-gmbh.com/jqGrid/SimpleLocalGridWithSearchingToolbar.htm

我的网格:

var data = [[1, "Math-101", "OC", "INTEL", "09-02-15", "09-30-15", "A", 120, "General", 200]]
$("#grid").jqGrid({
                    datatype: "local",
                    height: 200,
                    colNames:['#','Class','Loc','Type','Start Dt','End Dt','Section','Dur','Gen/Priv','Fee'],
                    colModel: [
                    {name: 'scheduleID',    index: 'scheduleID',  width: 30},
                    {name: 'className',     index: 'className',   width: 60},
                    {name: 'Location',      index: 'Location',    width: 60},
                    {name: 'classType',     index: 'classType',   width: 60},
                    {name: 'startDt',       index: 'startDt',     width: 60,  sorttype: "date",
                    searchoptions:{dataInit:function(el){$(el).datepicker({dateFormat:'yy-mm-dd'});} }},
                    {name: 'endDt',         index: 'endDt',       width: 60,  sorttype: "date",
                    searchoptions:{dataInit:function(el){$(el).datepicker({dateFormat:'yy-mm-dd'});} }},
                    {name: 'section',       index: 'section',     width: 60},
                    {name: 'duration',      index: 'duration',    width: 60},
                    {name: 'scheduleType',  index: 'scheduleType',width: 60},
                    {name: 'Fee',           index: 'Fee',         width: 60, formatter:'number', align:'right'}
                    ],
                    pager: '#pager',
                    rowNum: 10,
                    rowList: [10, 20, 30],
                    rownumbers: true,
                    sortname: "Class",
                    sortorder: "desc",
                    viewrecords: true,
                    gridview: true,
                    ignoreCase: true,
                    autoencode: true,
                    autowidth: true,
                    ExpandColClick: true,
                    caption: "Schedule List"
            });
                    var names = ['scheduleID', 'className', 'Location', 'classType', 'startDt', 'endDt', 'Section', 'duration', 'scheduleType', 'Fee', 'CEU', 'Status', 'IFee', 'TCost', 'FCost', 'MCost', 'OMCost'];
                    var mydata = [];
                    for (var i = 0; i < data.length; i++) {
            mydata[i] = {};
                    for (var j = 0; j < data[i].length; j++) {
            mydata[i][names[j]] = data[i][j];
            }
            }

            for (var i = 0; i <= mydata.length; i++) {
            $("#grid").jqGrid('addRowData', i + 1, mydata[i]);
            }

            
        $("#grid").jqGrid('filterToolbar', { stringResult: true, searchOperators: false, searchOnEnter: false, autosearch: true, defaulySearch: "cn" });
        

感谢您的帮助。

【问题讨论】:

    标签: javascript jquery jqgrid


    【解决方案1】:

    您应该将defaulySearch: "cn" 替换为defaultSearch: "cn"。它应该解决主要的搜索问题。您应该考虑使用 jqGrid 的ignoreCase: true 选项来强制 jqGrid 使用不区分大小写的搜索。

    此外,我强烈建议您不要在循环中使用addRowData 来填充jqGrid。取而代之的是,您应该只移动填充网格数据的代码mydata创建网格并仅使用选项data: mydata。它将使用填充数据创建数据。将显示排序数据的第一页。 jqGrid 将在显示之前对数据进行排序。

    小补充说明:您应该将sortname: "Class" 修复为sortname: "className"。我建议您从colModel 中删除所有index 值。您可以考虑使用cmTemplate: { width: 60 } 选项(请参阅the answer),它将colModel 中属性width 的默认值从150 更改为60。之后您可以从colModel 中删除所有width: 60。我建议您将sorttype: 'number' 添加到使用formatter:'number' 的列中。它将修复列中的排序。您可以考虑为包含日期的两列定义template(参见the answer)。

    【讨论】:

    • 天啊!!!我不敢相信这是问题所在:(我浪费了很多时间来更改和添加无用的选项,如索引等......
    • 感谢您的帮助以及其他提示。这是我创建的第一个 jqGrid。我正在自己创建一个简单的应用程序来实现 JQuery UI、Json 和 restful 服务。所以如果你有一个博客或类似的东西来获得最好的 jqGrid 实现,加上更多这些技巧,这将是非常有用的。谢谢
    • @MohammadKhalawi:不客气!我开发了自己的 jqGrid 分支:free jqGrid,它基于 jqGrid 4.7,可以像以前一样在 MIT/GPL 许可证下使用(参见自述文件)。我在the wiki 发布了一些文章,并计划尽快发布有关jqGrid/free jqGrid here 的更多信息(目前为空)。
    猜你喜欢
    • 2011-08-21
    • 2012-06-04
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    相关资源
    最近更新 更多