在编辑该列的单个单元格时,我需要更改jqxgrid列中的所有单元格。因此,我循环遍历所有单元格中的“计算单元格”事件:
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“,并在循环结束时将其绑定回来,但我不知道如何做到这一点。
谢谢
发布于 2014-04-02 17:33:48
不要为每个要编辑的单元格调用“setcellvalue”,直接在dataAdapter中编辑这些值可能会更快。您可以通过访问dataAdapter的“records”参数来做到这一点。
然后,需要强制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
https://stackoverflow.com/questions/22775608
复制相似问题