我使用SetRowData在jqGrid中设置一些行数据
jqColModel = gJqGrid.jqGrid('getGridParam','colModel');
rowData = gJqGrid.jqGrid('getRowData', rowid);
for (var i=0; i<newData.length; i++){
rowData[jqColModel[i+1].name] = newData[i];
}
gJqGrid.jqGrid('setRowData', rowid, rowData);
这是按预期工作的。正在使用newData
对象中的值更新jqGrid行。
然后我尝试使用
获取所有修改过的单元格jqRows = gJqGrid.jqGrid('getChangedCells', 'dirty');
但这似乎并没有奏效。我尝试批量处理所有更改并创建自定义保存事件
我的网格定义如下
$(gJqSel_Table).jqGrid({
caption : 'jqGrid'
, datatype : 'local'
, loadonce : true
, data : formattedLineData
, colNames : customColNames
, colModel : customColModel
, autoencode : true
, rowNum : 1000
, keys : true
, sortable : false
, hidegrid : false
, multiselect : false
, altRows : false
, height : '100%'
, autowidth : true
, shrinkToFit : true
, cellEdit : gSettings.editMode
, cellsubmit : 'clientArray'
, afterEditCell : function (rowid) {
var $editControl = $("#" + rowid).find("input, select, textarea");
if ($editControl){
$editControl.on('paste', function(e) {
GridPaste(e, rowid);
});
}
}
});
有人可以提供一些关于我如何
的指导使用JSON对象设置行的所有单元格值
将行中的每个单元格标记为脏,以便getChangedCells
方法知道值已更改?
答案 0 :(得分:0)
在阅读了jqGrid文档后,我发现了这个
<强> setRowData 强>
编辑行或单元格时,请勿使用此方法。这将 设置内容并覆盖输入元素。
更改我的代码以使用setCell
方法
getChangedCells
结果我的代码如下
jqColModel = gJqGrid.jqGrid('getGridParam','colModel');
for (var i=0; i<newData.length; i++){
colName = jqColModel[i].name;
gJqGrid.jqGrid('setCell', rowid, colName, newData[i], 'dirty-cell');
}
<强> 更新 强>
正如@Oleg在评论中指出的那样,我还必须添加以下内容以将jqGrid 行标记为已编辑:
gJqGrid.setRowData(rowid, false, 'edited');