jqGrid随机检查复选框列

时间:2017-03-08 13:57:28

标签: jquery checkbox jqgrid

我使用jqGrid将Json对象转换为常规HTML表。从服务器我得到对象,一切都很好,除了一件事。我添加了一列实际上是复选框列。在每个复选框输入的value属性中,如果选中复选框,我会把ID放到后面我传回服务器。

$("#membersGrid").jqGrid({
    url: '/Member/GetAllMembers',
    mtype: "GET",
    styleUI: 'Bootstrap',
    datatype: "json",
    colModel: [
        { label: 'Full Name', name: 'fullName', width: 150 },
        {
            label: 'Select', editable: true, name: 'id',
            edittype: 'checkbox', editoptions: { value: "true:false", defaultValue: "false" },
            formatter: "checkbox", formatoptions: { disabled: false }, width: 45
        }
    ],
    viewrecords: true,
    height: 250,
    width: 640,
    rowNum: -1,
    ajaxSubgridOptions: { async: false },
});

为值生成复选框列时,我定义了true或false,并使用defaultValue,我想声明false(未选中)是每个生成的单元格的默认值,带有复选框。

但我会随机检查复选框:

enter image description here

当我在Chrome中检查元素时,会以这种方式自动生成未选中的类型:

<td role="gridcell" style="" title="" aria-describedby="membersGrid_id">
     <input type="checkbox" value="400" offval="no">
</td>

并检查类似这样的类型:

<td role="gridcell" style="" title="" aria-describedby="membersGrid_id">
    <input type="checkbox" checked="checked" value="399" offval="no">
</td>

是否有其他方法告诉jqGrid避免使用defaultValue属性检查复选框?或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

我认为对formatter: "checkbox"的使用存在误解。它将输入值truefalse显示为复选框的已选中/未选中状态。输入数据的属性id将用作 rowid :行的id属性的值(网格的<tr>元素)。

因此,我建议您更改name或列,其中包含复选框。你应该修复你的主要问题。

我建议您小心使用formatter: "checkbox", formatoptions: { disabled: false }。 jqGrid支持三种编辑模式:单元格编辑,内联编辑和表单编辑,允许修改jqGrid的本地数据。此外,您目前还没有使用loadonce: true选项。因此,根本不会创建任何本地数据:只有HTML表中的数据才能保存从服务器返回的信息。复选框formatter: "checkbox", formatoptions: { disabled: false }的更改将不会被跟踪,您可能会遇到阅读数据的问题。所有依赖于如何您读取复选框的数据... The demo,我为the answer创建的,显示了如何修改本地数据jqGrid所以保存复选框的状态。