SetRowData和DirtyCells
我正在使用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
方法知道值已更改?
在更多地阅读了jqGrid文档后,我发现了这一点
setRowData
编辑行或单元格时,请勿使用此方法。 这将设置内容并覆盖输入元素。
更改我的代码以使用setCell
方法
- 单元格值已更新
- 单元格被标记为脏并包含在
getChangedCells
结果中
我的代码如下
jqColModel = gJqGrid.jqGrid('getGridParam','colModel'); for (var i=0; i
更新
正如@Oleg在评论中指出的那样,我还必须添加以下内容来将jqGrid 行标记为已编辑:
gJqGrid.setRowData(rowid, false, 'edited');