Наконец, мне удалось принести кусок кода, чтобы определить, что мы хотим;)
Надеюсь, у любого гуру jqgrid (например, Олег ) есть достаточно времени, чтобы просмотреть этот кодулучшите его.
Пример кода будет работать для обнаружения данных, измененных в сетке с редактируемым полем с именем "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',
});
},
...
});