【发布时间】:2016-09-12 11:51:35
【问题描述】:
之前已经在这里提出过类似的问题,但我在我的场景中使用这些答案没有任何成功。
我有一个数据类型为“local”且 loadonce:true 的网格。在我的 3 个专栏中,我使用了自定义格式化程序。
第一个以毫秒为单位获取时间戳,并以“H:MM am”的形式显示时间(例如,上午 8 点 35 分,下午 12 点 19 分)。我将省略该代码,因为我确定它不相关。
第二个客户格式化程序接受一个整数并返回一个字符串,指示该数字代表一周中的哪几天。它使用按位运算,其中 1 是星期日,2 是星期一,4 是星期二,8 是星期三,等等。所以数字 67 代表星期日、星期一和星期六 (1+2+64),所以格式化程序返回 "SMSa"
function daysOfWeekFormatter(daysMask, options, rowObject) {
var days='';
if ((daysMask & 1) != 0) days+="S";
if ((daysMask & 2) != 0) days+="M";
if ((daysMask & 4) != 0) days+="T";
if ((daysMask & 8) != 0) days+="W";
if ((daysMask & 16) != 0) days+="Th";
if ((daysMask & 32) != 0) days+="F";
if ((daysMask & 64) != 0) days+="Sa";
return days;
}
第三个自定义格式化器很简单,它只是返回一个字符串,如果是布尔值则为假,如果为真则什么都没有:
function closedFormatter(isOpen, options, rowObject) {
return isOpen ? '' : 'Closed';
}
这是我的 jqgrid 调用。
$("#jqgrid").jqGrid({
colModel: [
{ name: 'timeField', label: 'Time', index: 'timeField', width: 100, formatter: timeFormatter},
{ name: 'daysOfWeek', label: 'Days of the Week', formatter: daysOfWeekFormatter},
{ name: 'openClosed', label: 'CLOSED', formatter: closedFormatter}
],
datatype: 'local',
loadonce: true,
scrollOffset: 0,
viewrecords: false,
rowNum: -1
});
$("#jqgrid").jqGrid("filterToolbar", {stringResult: true, searchOnEnter: false, defaultSearch: "cn"});
在列过滤器中,我希望用户能够只输入他们在表格中看到的内容并进行过滤。例如,如果他们在星期几中键入“F”,他们会看到包括 F 在内的所有行。“S”将产生周六和周日行。
任何想法如何做到这一点?我想编写一个函数,用输入的过滤器为每一行调用,我可以返回真或假。 jqgrid 提供这样的东西吗? 谢谢!
【问题讨论】: