我有一个带有高级过滤器的jqGrid 4.3.1。某些列是布尔类型,如是/否类型,我在创建新的高级过滤器行时选择列类型时显示下拉列表。 例如。假设第2列是IsActive(布尔)类型,当选择它时,我显示了一个下拉菜单而不是文本框。 覆盖jqGrid高级过滤器的代码如下:
var cols = grid.jqGrid("getGridParam", "colModel");
for (var i = 0; i < cols.length; i++) {
if (cols[i].stype && cols[i].stype == "select" && cols[i].searchoptions && cols[i].searchoptions.buildSelect && $.isFunction(cols[i].searchoptions.buildSelect)
&& !cols[i].searchoptions.dataUrl && !cols[i].searchoptions.value) {
cols[i].searchoptions.value = cols[i].searchoptions.buildSelect(null);
}
此代码以前在4.3版本(4.3.1之前的一个版本)中工作正常 不知道导致问题的原因,但现在我的下拉列表显示为空白。 任何帮助表示赞赏!
答案 0 :(得分:2)
您没有发布您使用的buildSelect
代码,因此很难说代码失败的原因。我最不理解的是为什么你有这么复杂的代码。如果您知道列IsActive
具有类型布尔值,并且您希望在“高级搜索”对话框中将其显示为具有“是”和“否”值的下拉列表并将其显示在网格中,并且在编辑期间作为复选框可以执行以下内容:
{ name: "IsActive", template: myCheckboxTemplate }
您定义的mytemplateCheckbox
类似
var myCheckboxTemplate = {
formatter: "checkbox", align: "center", width: 20,
edittype: "checkbox", editoptions: { value: "1:0" },
stype: "select", searchoptions: { sopt: ["eq", "ne"], value: "1:Yes;0:No" }
};
我永久使用的描述方法,它运作良好。与上面代码的唯一区别是我使用"clickableCheckbox"格式化程序而不是“复选框”。如果您愿意,可以从here下载。