我有一个网格,当用户突出显示要过滤的文本时,我会在其中提供搜索。
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"]}
mc
和mn
是customSortOperations
的一部分。
现在我想要的是当用户在网格内的特定单元格内选择一些文本时,我想检测使用了哪个搜索过滤器。例如,默认情况下,搜索过滤器为cn
。
我试过这个:
$("a.soptclass[data-colname='"+selectionColumn+"']").attr('data-soper')
但它每次都给我默认的cn
。
我可以在链接中找到一个符号名称,例如~
为cn
,==
为eq
$("a.soptclass[data-colname='"+selectionColumn+"']").text()
然而,是否有一种jqgrid方式可以选择精确的搜索运算符?即cn
,eq
,ne
,le
等
如果需要工作演示,请告诉我,我会更新问题。
更新: DEMO。
在第659行和第660行,我正在使用此回调$("a.soptclass[data-colname='"+selectionColumn+"']").text()
换句话说,我希望onCellSelect
答案 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")
来访问数据。
我希望你现在缺少的是什么。