如何在免费的jqGrid中的onCellSelect中获取所选的搜索过滤器?

时间:2016-04-06 14:02:22

标签: javascript jquery jqgrid free-jqgrid

我有一个网格,当用户突出显示要过滤的文本时,我会在其中提供搜索。

onCellSelect看起来像这样:

onCellSelect: function(row, col, content, event) {
    var cm = grid.jqGrid("getGridParam", "colModel");
    if (window.getSelection) {
        selection = window.getSelection();
    } else if (document.selection) {
        selection = document.selection.createRange();
    }
    selectionColumn = cm[col].name;
    selection.toString() !== '' && $("#gs_"+selectionColumn).val(selection.toString());
    console.log($("a.soptclass[data-colname='"+selectionColumn+"']").attr('data-soper'));
    if(selection.toString() != '')
    {
        grid[0].triggerToolbar();
    }

}

现在我有一些我自定义并在网格中使用它的搜索运算符:

searchoptions:{sopt:["cn",'mc','mn',"eq","ne","lt","le","gt","ge","bw","ew","nc"]}

mcmncustomSortOperations的一部分。

现在我想要的是当用户在网格内的特定单元格内选择一些文本时,我想检测使用了哪个搜索过滤器。例如,默认情况下,搜索过滤器为cn

我试过这个:

$("a.soptclass[data-colname='"+selectionColumn+"']").attr('data-soper')

但它每次都给我默认的cn

我可以在链接中找到一个符号名称,例如~cn==eq

$("a.soptclass[data-colname='"+selectionColumn+"']").text()

然而,是否有一种jqgrid方式可以选择精确的搜索运算符?即cneqnele

如果需要工作演示,请告诉我,我会更新问题。

更新: DEMO

在第659行和第660行,我正在使用此回调$("a.soptclass[data-colname='"+selectionColumn+"']").text()

换句话说,我希望onCellSelect

中的所选搜索运算符

1 个答案:

答案 0 :(得分:1)

我仍然不完全了解您要实现的确切行为,但似乎您可以使用以下代码启动onCellSelect代码:

onCellSelect: function(row, col, content, event) {
    var p = $(this).jqGrid("getGridParam");
    var hDiv = p.frozenColumns === true && p.colModel[col].frozen === true ?
                this.grid.fhDiv : this.grid.hDiv;
    var $elem = $(hDiv).find("#gs_" + $.jgrid.jqID(p.id + "_" + p.colModel[col].name));
    var oper = $elem.parent().prev().children("a").data("soper");
    ...
}

$elem使用当前空闲jqGrid实现的标准id行为(未指定idMode的{​​{1}}选项)。元素filterToolbar是过滤器工具栏中的$elem<input>元素。您可以使用<select>更改值。 $elem(selection)变量包含当前选择的搜索操作。应该使用oper代替.data("soper")来访问数据。

我希望你现在缺少的是什么。