【问题标题】:jqGrid Toolbar search operator by columnjqGrid 工具栏按列搜索运算符
【发布时间】:2011-06-21 17:53:01
【问题描述】:

我正在使用 jqGrid 过滤器工具栏。 我用 2 列测试它,一列是数字,另一列是字母数字。

通过过滤器工具栏的所有过滤器操作都是使用'bw'(开头)运算符进行的。

如何设置要按列执行的操作?

在这种情况下,我想在数字列上执行“eq”,在字母数字列上执行“cn”。

顺便说一句,如果我使用高级搜索对话框,一切正常。

谢谢!

这是我的实现:

$('#EntityListGrid').jqGrid({
    url: '<%= ResolveUrl("~/Controls/EntityManager/Controllers/EntitiesController.ashx?method=GridDataList") %>',
    datatype: 'json',
    mtype: 'GET',
    colNames: ['ID', 'Name', 'Actions'],
    colModel: [
    { name: 'EntityID', index: 'EntityID', width: 50, align: 'left', resizable: true, sortable: true, sopt:['eq'] },
    { name: 'Name', index: 'Name', width: 250, align: 'left', resizable: true, sortable: true },
    { name: 'act', index: 'act', width: 75, sortable: false, search: false },
    ],
    pager: $('#EntityListGridPager'),
    rowNum: 10,
    rowList: [10, 20, 30],
    sortname: 'EntityID',
    sortorder: 'desc',
    viewrecords: true,
    imgpath: '',
    caption: 'Entities',
    width: EntityListGridWidth,
    height: 400,
    gridComplete: function () {
        var ids = jQuery("#EntityListGrid").jqGrid('getDataIDs');
        var editImageUrl = '<%=Page.ResolveUrl("~/Controls/EntityManager/Images/edititem.GIF")%>';
        for (var i = 0; i < ids.length; i++) {
            var cl = ids[i];

            ce = "<img src='" + editImageUrl + "'  onclick='EditEntity(" + cl + "); return false;' />";
            ce2 = "<input type='button' value='details' src='" + editImageUrl + "' onclick='EditEntity(" + cl + "); return false;' />";
            $("#EntityListGrid").setRowData(ids[i], { act: ce2 });
        }
    }
}).navGrid('#EntityListGridPager', { search: true, edit: false, add: false, del: false, searchtext: "Search" }, {}, {}, {}, { closeOnEscape: true, multipleSearch: true, closeAfterSearch: true });

$('#EntityListGrid').jqGrid('filterToolbar', { stringResult: true, searchOnEnter: false });

【问题讨论】:

    标签: jquery jquery-plugins jqgrid jqgrid-asp.net


    【解决方案1】:

    您可以在相应的列定义中使用sopt 属性。在您的情况下,它可以是 sopt:['eq']sopt:['cn']。该设置将仅覆盖所选列的搜索运算符。

    有时确实需要使用sopt:['eq'] 属性。例如,如果您的列带有选项stype:'select', edittype:'select', formatter:'select'

    更新:正确的设置是searchoptions:{sopt: ['eq']} 而不是sopt: ['eq']。阅读the documentation 了解它。

    【讨论】:

    • 我在这里发布问题之前尝试过,但它没有用。检查我仍然阅读的请求: {"groupOp":"AND","rules":[{"field":"EntityID","op":"bw","data":"4"}]} 列声明如下: { name: 'EntityID', index: 'EntityID', width: 50, align: 'left', resizable: true, sortable: true, sopt:['eq'] } 我还需要什么吗?谢谢!
    • @AlexCode:我想你在实施中遇到了问题。看看这个网格。您可以轻松验证在启动后将发送带有"{"groupOp":"AND","rules":[{"field":"Category","op":"eq","data":"1"}]}" 的请求。它对应于“类别”列的sopt: ['eq'] 选项。
    • 我正在尝试/捕获模式:) 我会将我的实现粘贴到另一条评论中,也许您可​​以轻松查看任何内容。谢谢奥列格!
    • @AlexCode:最好将您的问题修改为使用 cmets 作为代码。
    • @AlexCode:错误很简单。请参阅我的答案的更新部分。
    【解决方案2】:

    只是提一下,如果您不想丢失页脚中的其他搜索操作数 Search 重要的是在 Array 中添加所有其他操作数。只有第一个用于Toolbarsearch

    对于 phpgrid

    $opsmeta = array("cn","eq","bw","ni","in","ne","lt","le","gt","ge","bn","ew","en","nc") ;
    $col["searchoptions"] = array("sopt"=>$opsmeta);
    

    感谢这些款待帮助我解决了一些搜索问题

    【讨论】:

      猜你喜欢
      • 2014-05-14
      • 2012-06-04
      • 1970-01-01
      • 2013-07-16
      • 1970-01-01
      • 2012-02-15
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      相关资源
      最近更新 更多