0

我有一个带有高级过滤器的 jqGrid 4.3.1。有些列是布尔类型,例如是/否类型,当创建新的高级过滤器行时选择列类型时,我会显示一个下拉列表。例如说第 2 列是 IsActive (Boolean) 类型,当它被选中时,我显示了一个下拉列表而不是文本框。覆盖 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 之前的一个版本)中可以正常工作 不知道是什么导致了问题,但现在我的下拉列表显示为空白。任何帮助表示赞赏!

4

1 回答 1

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”格式化程序而不是“checkbox”。如果你愿意,你可以从这里下载。

于 2012-05-11T15:28:11.997 回答