我正在使用 jqGrid 过滤器工具栏。 我正在用两列进行测试,一列是数字,另一列是字母数字。
通过过滤器工具栏的所有过滤器操作均使用“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 });
最佳答案
您可以使用sopt相应列定义中的属性。根据您的情况,它可以是 sopt:['eq']
和 sopt:['cn']
。该设置将仅覆盖所选列的搜索运算符。
有时确实需要使用 sopt:['eq']
属性。例如,如果您的列包含选项 stype:'select', edittype:'select', formatter:'select'
。
更新:正确的设置是 searchoptions:{sopt: ['eq']}
而不是 sopt: ['eq']
。阅读 the documentation关于它。
关于jquery - jqGrid 工具栏按列搜索运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4904779/