2012-05-11 49 views
0

我有一个带有高级过滤器的jqGrid 4.3.1。一些布尔类型的列如Yes/No types,当创建一个新的高级过滤器行时选择列类型时,我会显示一个下拉列表。 例如说第2列是IsActive(布尔)类型,当选择这个时,我显示了一个下拉菜单而不是文本框。 将覆盖jqGrid的先进过滤器的代码如下: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前一个版本),以做工精细 不知道是什么原因造成的问题,但现在我的下拉菜单显示为空白。 任何帮助表示赞赏!

回答

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下载它。

+0

感谢您的回答。我已经添加了一个新的问题,我真的很挣扎..http://stackoverflow.com/questions/10579864/jqgrid-column-selector-inline-rather-than-in-dialog – chugh97

+0

我的构建选择函数映射到一个函数其中有以下实现返回“:所有;真:真;假:假”;; – chugh97

+0

@ chugh97:哪种感觉必须从服务器获取静态数据(来自URL'dataUrl'),然后将其转换为带有静态值的选择?此外,'buildSelect'必须产生HTML片段''而不是字符串'':All; true:True; false:False“ '用作'value'属性的值。搜索对话框中':All;'的用法也不好。一切似乎都很奇怪...... – Oleg