jquery - JqG​​rid : Checkbox formatter

标签 jquery checkbox jqgrid formatter

我正在尝试在我的列上应用复选框。我想知道的是如何根据值选中或取消选中复选框。例如,如果列的值为“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”值的选择(下拉列表):

enter image description here

关于jquery - JqG​​rid : Checkbox formatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27185679/

相关文章:

javascript - 当另一个复选框被重叠选中时取消全部选中/选中一个复选框

带有复选框的 JavaFX ComboBox

jquery - jqGrid 禁用由 dataUrl 加载的下拉列表

javascript - 使用 jQuery 删除表中指定行之后的所有行

java - 以编程方式选择复选框节点的问题

jquery - 父级中的中心叠加

javascript - 将 javascript 事件添加到 jqGrid

javascript - 子网格未填充在免费的 jqGrid 中

javascript - 我如何让 jQuery 与我一起工作?

javascript - 插入新元素时如何向下移动 DOM 元素,以免它们重叠?