Templates jqgrid:如何在组合框中定义过滤器预设/模板?

Templates jqgrid:如何在组合框中定义过滤器预设/模板?,templates,jqgrid,combobox,filter,Templates,Jqgrid,Combobox,Filter,我有一个jqgrid,其中包含一些要过滤的数据。我想用一些预定义的过滤器集/模板定义一个组合框。 如果用户选择组合框的一项,网格应自动应用组合过滤器。最好将组合框集成到工具栏或jqGrid的寻呼机中,但也可以集成到html页面中 例如: COMBO BOX Item templates filter parameters ___________ |Expired | << Timeout =

我有一个jqgrid,其中包含一些要过滤的数据。我想用一些预定义的过滤器集/模板定义一个组合框。 如果用户选择组合框的一项,网格应自动应用组合过滤器。最好将组合框集成到工具栏或jqGrid的寻呼机中,但也可以集成到html页面中

例如:

         COMBO BOX
       Item templates       filter parameters
        ___________
       |Expired    |        << Timeout = true
       |Last Week  |        << OpenDate between 02/13/2012 and 02/16/2012
       |Last Month |        << OpenDate between 01/01/2012 and 02/16/2012
       |.........  |        ......
组合框
项目模板筛选器参数
___________
|中已过期的|jqGrid支持(请参阅中的“搜索”/“搜索模板”),但中当前没有搜索模板支持

我觉得你的问题很有趣。在中,我描述了如何使用通用外部过滤器向服务器发送附加信息。对于远程数据,这种方法可能很好,但不能直接在本地网格或使用
loadonce:true
选项的网格中使用

因此,我创建了一个示例,展示了如何在中实现过滤器模板,以及如何将模板集成到jqGrid中。我以前在列标题上方有额外的空工具栏:

在实现中,我使用了我最初建议的
refreshSerchingToolbar
函数。重要的是要了解,
refreshSerchingToolbar
函数只在过滤器工具栏中填写过滤器可以准确表示的信息。例如,“已关闭”行的筛选器可以在筛选器工具栏中表示(请参见上图),但日期“上周”和“上月”的间隔不能表示。在这种情况下,网格中的数据将被过滤,但过滤器工具栏的相应字段保持为空

下面是演示代码中最重要的部分

var$grid=$(“#列表”),
initDate=函数(elem){
$(元素).日期选择器({
日期格式:“dd-M-yy”,
自动调整大小:正确,
变化年:是的,
变化月:对,
showButtonPanel:是的,
《秀周刊》:没错
});
},
numberTemplate={formatter:'number',align:'right',sorttype:'number',可编辑:true/*,
搜索选项:{sopt:['eq','ne','lt','le','gt','ge','nu','nn','in','ni']}*/},
dateTemplate={width:80,align:'center',sorttype:'date',
格式化程序:“日期”,格式化选项:{newformat:'d-M-Y'},可编辑:true,datefmt:'d-M-Y',
编辑选项:{dataInit:initDate},
搜索选项:{sopt:['eq',ne',lt',le',gt',ge'],dataInit:initDate},
yesNoTemplate={align:'center',可编辑:true,格式化程序:'checkbox',
edittype:'复选框',editoptions:{value:'是:否',defaultValue:'否'},
stype:'select',searchoptions:{sopt:['eq',ne'],value:':Any;true:Yes;false:No'},
myDefaultSearch='cn',
getColumnIndex=函数(columnIndex){
var cm=this.jqGrid('getGridParam','colModel'),i,l=cm.length;
对于(i=0;i0){
标记名=控件[0]。标记名.toUpperCase();
如果(标记名==“选择”){/&&cmi.stype==“选择”
控件。查找(“选项[值=“”]”)
.attr('selected','selected');
}else if(标记名==“输入”){
对照组:val(“”);
}
}
}
if(typeof(postData.filters)=“string”&&
typeof(this.ftoolbar)=“boolean”&&this.ftoolbar){
filters=$.parseJSON(postData.filters);
if(filters&&filters.groupOp==”和“&&typeof(filters.groups)==”未定义“){
//只有在不分组的情况下进行提前搜索时,我们才会在
//搜索工具栏
规则=过滤器。规则;
对于(i=0,l=rules.length;i=0){
cmi=cm[iCol];
control=$(“#gs_quot+$.jgrid.jqID(cmi.name));
如果(control.length>0&&
(((typeof(cmi.searchoptions)==“未定义”||
typeof(cmi.searchoptions.sopt)==“未定义”)
&&rule.op==myDefaultSearch)||
(typeof(cmi.searchoptions)=“对象”&&
$.isArray(cmi.searchoptions.sopt)&&
cmi.searchoptions.sopt.length>0&&
cmi.searchoptions.sopt[0]==rule.op))){
标记名=控件[0]。标记名.toUpperCase();
如果(标记名==“选择”){/&&cmi.stype==“选择”
control.find(“选项[value=”+$.jgrid.jqID(rule.data)+“]”)
.attr('selected','selected');
}else if(标记名==“输入”){
control.val(规则数据);
}
}
}
}
}
}
},