1

我有一个 jqxGrid,其中有几个复选框。我需要做的是找到一个在复选框更改时触发的事件。我努力了:

  • changed
  • cellbeginedit
  • cellendedit
  • cellvaluechanged
  • cellvaluechanging

. 一切都无济于事。

我不想在任何单元格更改时触发和事件,只是这个复选框。

关于如何实现这一点的任何想法?
我已经包含了下面的代码。
复选框是“重新认证”行

$("#ModulesGrid").jqxGrid({
        width: 890,
        height: 350,
        theme: modulesTheme,
        columnsresize: true,
        source: dataAdapter,
        pageable: true,
        editable: true,
        columns: [
                  { text: 'Module Name', datafield: 'modulename', width: 100, editable: false },
                  { text: 'Optional', datafield: 'Optional', columntype: 'checkbox', width: 100 },
                  { text: 'Assigned', datafield: 'Assigned', width: 80 , columntype: 'checkbox'},
                  { text: 'Pass', datafield: 'pass',cellsrenderer: radioRenderer,width: 50, editable: false },
                  { text: 'NC', datafield: 'nc',cellsrenderer: radioRenderer,width: 50, editable: false },
                  { text: 'Fail', datafield: 'fail',cellsrenderer: radioRenderer,width: 50, editable: false },
                  { text: 'Re-Cert', datafield: 'recert', columntype: 'checkbox', width: 50, cellvaluechanged: function(event){alert(1);}},
                  { text: 'Re-Cert Reason', datafield: 'reason', width: 100, editable: false},
                  { text: 'Prior Cert', datafield: 'priorcert', width: 50, editable: false }
              ]
    });

这是 API 的链接:http ://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxgrid/jquery-grid-api.htm

编辑:它不会让我在 jqWidget 下标记它,因为该标记不存在并且我没有 1500 个代表。对不起,这是混淆。

4

3 回答 3

2

在使用此插件时,我遇到了类似的问题。

因此,我尝试使用复选框图像并将事件分配给图像,而不是内置事件,而是将 click 事件分配给元素。

另外我注意到您没有绑定 cellbeginedit 或 cellendedit 事件..

$("#ModulesGrid").bind('cellbeginedit', function (event) {
     var args = event.args;
  alert("Column: " + args.datafield + ",
           Row: " + (1 + args.rowindex) + ", Value: " + args.value);
});

并从定义中删除事件并像上面一样绑定它

{ text: 'Re-Cert', datafield: 'recert', columntype: 'checkbox', width: 50 },

更新

如果是这种情况,您可以处理该特定列的 cellsrenderer 方法。

var columncheckboxRenderer = function(row, column, value) {
    var html;
        html = '<span style="margin:4px;float:left" onclick="clickImage(this,'
                + row + ')"><img alt="selectme" class="image-unchecked" '  
                +  src="../../Images/checkbox_off.png"/></span>';

    return html;
}

{ text: 'Re-Cert', datafield: 'recert',  width: 50,
          cellsrenderer: columncheckboxRenderer, renderer: header},

然后写下click event复选框......这应该可以完成工作......这就是我处理我的要求的逻辑的方式。

于 2012-12-10T23:50:11.023 回答
0

此示例使用 'cellendedit' 事件:复选框选择。更改复选框的值时会引发“cellendedit”。

于 2012-12-11T06:24:58.513 回答
0

我能找到的最干净的方法是连接“cellvaluechanged”。这会捕获任何单元格值的变化。然后事件 args 会告诉您列名、旧值、新值等。您仍然可能需要在行之后从行中获取一些唯一标识符,例如表的唯一键(例如)。

    $("#grid").on("cellvaluechanged", function (event) {
        var theKey = $("#grid").jqxGrid("getcellvalue", event.args.rowindex, "key");
        doSomething(theKey, event.args.newvalue);
    });
于 2014-08-27T20:56:19.910 回答