我正在尝试在我的列上应用复选框。我想知道的是如何根据值选中或取消选中复选框。例如,如果列的值为“1”,则选中该框,但如果列的值为“0”或“null”,则必须取消选中该框。
下面的代码是我整个 jqgrid 代码的一部分。
coleModel[{
name: 'MENU1',
index: 'MENU1',
editable: true,
sortable: false,
search: false,
edittype:'checkbox',
editoptions: { value:"1:0"},
formatter: function (cellValue, options, rowObject) {
if (cellValue == '1') {
return 'Enabled';
}else if(cellValue == '0') {
return 'Disabled';
}else{
return cellValue;
}
}
}]
此列在列表中很好地显示“启用”或“禁用”。 我不知道如何显示复选标记。请让我知道该怎么做。谢谢。
----------------------------------------------------------------------------------------
抱歉问错问题了。这很难向我描述。嗯..你们可以引用一下网站“http://www.trirand.com/jqgridwiki/doku.php?id=wiki:form_editing”吗?下图是“editGridRow”。名为“已关闭”的列就是我正在寻找的列。 我不是这个领域的专家,所以我无法清楚地解释。非常抱歉。
最佳答案
很难理解您,因为您以错误的方式使用现有术语。格式化程序仅用于根据输入值将数据放置在网格单元中。例如,您在代码中使用了自定义格式化程序,如果输入数据为“1”,则将字符串“Enabled”放入列中;如果输入数据为“1”,则将字符串“Disabled”放入列中“0”。
从评论中对您问题的后期讨论,我可以理解(我希望现在我正确理解您),您只是在使用 edittype: 'checkbox'
时遇到问题编辑表单。
重要的是要了解编辑表单将基于列中的值构建。如果您使用在列中放置“启用”或“禁用”的自定义格式化程序,那么您可以使用
edittype: "checkbox", editoptions: { value: "Enabled:Disabled" }
The demo演示了解决方案。
另一个直觉规则是定义总是 unformatter与格式化程序一起。例如,您可以将以下内容与现有的格式化程序
代码结合使用
unformat: function (cellvalue) {
switch (cellvalue) {
case "Enabled":
return "1";
case "Disabled":
return "0";
default:
return "0";
}
},
edittype: "checkbox", editoptions: { value: "1:0" }
The demo使用代码。
还有一个选项是删除自定义格式化程序。如果需要将输入数据替换为字符串,则可以使用 predefined 格式化程序:“选择”
。在这种情况下,列的定义将包含以下属性
formatter: "select", formatoptions: { value: "0:Disabled;1:Enabled" },
edittype: "checkbox", editoptions: { value: "1:0", defaultValue: "1" }
由于所有预定义格式化程序也定义了取消格式化程序,因此 edittype: "checkbox"
的 value
选项将为 "1:0"
。
The demo使用属性,jqGrid 的外观与之前的演示相同。
我个人觉得有一件事不符合逻辑。您在网格中显示“启用”或“禁用”,但在编辑表单中使用复选框。在我看来这并不是必然结果。您也应该在网格中使用 formatter: "checkbox"
并将复选框放置在网格中,或者您应该使用 edittype: "select"
而不是 edittype :“复选框”
。在最后一种情况下,用户只能使用文本“Enabled”和“Disabled”。
The corresponding demo在编辑表单中显示具有“Enabled”和“Disabled”值的选择(下拉列表):
关于jquery - JqGrid : Checkbox formatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27185679/