如何在jqGrid中禁用所选列的搜索选项?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在jqGrid中禁用所选列的搜索选项?相关的知识,希望对你有一定的参考价值。
我有一个带列过滤器的五列(2个整数,3个字符串列)网格。我希望搜索操作的整数值(更大,更小,相等)工作正常,我不希望搜索字符串列操作。
我正在使用后端搜索。
我想要的是附上模型图像,如下所示
我想要搜索,但我不希望搜索操作的字符串有列
如何删除所选列中的搜索操作。请帮我。
jQuery("#list451").jqGrid({
url: 'localset.php',
datatype: "json",
height: 255,
width: 600,
colNames: ['Index', 'Name', 'Code', 'N Name', 'C Name'],
colModel: [{
name: 'item_id',
index: 'item_id',
width: 65,
sorttype: 'integer',
searchoptions: {
sopt: ['eq', 'ne', 'le', 'lt', 'gt', 'ge']
}
}, {
name: 'name',
index: 'name',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: []
}
}, {
name: 'code',
index: 'code',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: ['eq', 'bw', 'bn', 'cn', 'nc', 'ew', 'en']
}
}, {
name: 'n_name',
index: 'n_name',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: []
}
}, {
name: 'c_name',
index: 'c_name',
width: 150,
sorttype: 'string',
searchoptions: {
sopt: []
}
},
rowNum: 50,
rowTotal: 200,
rowList: [20, 30, 50],
loadonce: true,
mtype: "GET",
rownumbers: true,
rownumWidth: 40,
gridview: true,
pager: '#pager451',
sortname: 'item_id',
viewrecords: true,
sortorder: "asc",
caption: "Loading data from server at once"
}); jQuery("#list451").jqGrid('filterToolbar', {
searchOperators: true
});
答案
我发现你的问题非常有趣,所以我准备了the demo,它展示了问题是如何解决的。结果如下图所示:
当前版本的jqGrid支持clearSearch
,可以为每个特定列定义,但它不支持列特定的searchOperators
选项。 searchOperators
只有filterToolbar
选项适用于所有列。
该演示调用normalizeFilterToolbar
函数,该函数使用所有列的灼热操作隐藏搜索输入的部分,其中在列定义中使用新的searchOperators: false
选项或仅指定了一个操作(例如,在sopt
中没有定义searchoptions
或者如果没有完全根据searchoptions
)。相应的代码看起来
var $grid = $("#list"), // the grid
normalizeFilterToolbar = function () {
var $self = this,
colModel = $self.jqGrid("getGridParam", "colModel"),
$searchToolbarColumns = $self.closest(".ui-jqgrid-view")
.find(">.ui-jqgrid-hdiv .ui-jqgrid-htable .ui-search-toolbar>.ui-th-column"),
cCol = colModel.length,
iCol,
cm;
for (iCol = 0; iCol < cCol; iCol++) {
cm = colModel[iCol];
if (cm.searchoptions == null ||
((cm.searchoptions.sopt == null || cm.searchoptions.sopt.length === 1) && cm.searchoptions.searchOperators !== true) ||
(cm.searchoptions.searchOperators === false)) {
// hide the searching operation for the column
$($searchToolbarColumns[iCol]).find(">div>.ui-search-table .ui-search-oper").hide();
}
}
};
// create the grid
$grid.jqGrid({
// ... the options
});
$grid.jqGrid("filterToolbar", {searchOperators: true, defaultSearch: "cn"});
normalizeFilterToolbar.call($grid);
另一答案
在colModel中使用search:false
获取您不需要搜索的列。
UPDATE 您可以通过替换搜索选项来自定义网格中的搜索选项:使用搜索规则
searchrules:{custom:true, custom_func: fnc_myStringCheck }, search:true }
确保stype是文本(虽然它是默认值)和fnc_myStringCheck用于自定义方法。希望这可以帮助。
另一答案
静态方式:
colModel : [
{
name : 'sequenceId',
index : ' ',
search: false,
sortable : true,
classes: 'wrap'
}
动态方式:
colModel : [
{
name : 'sequenceId',
index : ' ',
sortable : true,
classes: 'wrap',
formatter: disableSearch
}
function disableSearch(cellvalue, options, rowObject) {
options.colModel.search = false;
return cellvalue;
}
以上是关于如何在jqGrid中禁用所选列的搜索选项?的主要内容,如果未能解决你的问题,请参考以下文章