0

在编辑该列的单个单元格时,我需要更改 jqxgrid 列中的所有单元格。因此,我在“cellvaluechanged”事件中遍历所有单元格:

var ri = -1;
$("#jqxGrid").on('cellvaluechanged', function (event) {
    if(ri != -1) return;
    var column = args.datafield;
    if(column == 'min'){
        var row = args.rowindex;
        if(ri == -1)ri = row;
            var griddata = $("#jqxGrid").jqxGrid('getdatainformation');
            var v = args.value;         
            for (var i = 0; i < griddata.rowscount; i++) {
                if(i != row){
                    $("#jqxGrid").jqxGrid('setcellvalue', i, 'min', v);
                }   
            }           
        ri = -1;            
    }
});

问题是对于大型表格来说太慢了,因为循环中单元格的每次更改都会再次调用“oncellvaluechanged”函数。

有什么更优雅的方式来做到这一点?我想在循环之前取消绑定“oncellvaluechanged”并在最后绑定它,但不知道该怎么做。

谢谢

4

1 回答 1

0

不要为要编辑的每个单元格调用“setcellvalue”,直接在 dataAdapter 中编辑值可能会更快。您可以通过访问 dataAdapter 的“记录”参数来做到这一点。

然后,您需要强制 jqxGrid 刷新数据。您可以通过调用“渲染”或“刷新”来做到这一点。

有关更多信息,请参阅这些链接:

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxdataadapter/jquery-data-adapter.htm

http://www.jqwidgets.com/jquery-widgets-documentation/documentation/jqxinput/jquery-input-api.htm

于 2014-04-02T17:33:48.573 回答