最后,我设法带了一段代码来检测我们想要什么;)
希望那里的任何 jqgrid 大师(如 Oleg)有足够的时间来审查并改进此代码。
示例代码将用于检测网格中更改的数据,其中包含名为 “name” 的可编辑字段。如果要检查更多列中的更改数据,则必须添加与该列关联的变量 after_edit 和 before_edit。
为了在onSelectRow函数中获取之前的单元格数据,我没有使用getCell方法,因为在文档中用红色表示:
当您编辑行或
细胞。这将返回单元格内容而不是
输入元素的实际值
不好意思,我可以检查文档是否正确 :(。
但是getCell 函数可以正常处理当前单元格数据。
这里是代码:
// Declare variables used for inline edit functionality.
var last_selected;
var before_edit_value;
var after_edit_value;
$('#grid-id').jqGrid({
...
onSelectRow: function(row_id){
if(row_id && row_id !== last_selected) {
/*
* Determine if the value was changed, if not there is no need to save to server.
*/
if (typeof(last_selected) != 'undefined') {
after_edit_value = $('#grid-id tr#' + last_selected + ' .name_column input').val();
}
if (before_edit_value != after_edit_value) {
/*
* Save row.
*/
$('#grid-id').jqGrid(
'saveRow',
last_selected,
function(response){
/* SuccessFunction: Do something with the server response */
return true;
},
'http://url.to.server-side.script.com/server-side-script.php',
{
additional_data: 'example: additional string',
});
}
else {
/*
* Restore the row.
*/
$('#grid-id').jqGrid('restoreRow', last_selected);
}
before_edit_value = $('#grid-id').jqGrid('getCell', row_id, 'name');
}
last_selected = row_id;
/*
* Edit row.
*/
$('#grid-id').jqGrid(
'editRow',
row_id,
true,
function() {/* OnEditFunction */},
function(response) {
/* SuccessFunction: Do something with the server response */
return true;
},
'http://url.to.server-side.script.com/server-side-script.php',
{
additional_data: 'example: additional string',
});
},
...
});