Я использую jqGrid с inlineNav
, чтобы пользователи могли редактировать/добавлять/удалять строки локально, а затем отправлять все изменения на сервер по завершении. Я хотел бы иметь возможность добавлять несколько новых строк в сетку локально, но из-за других требований мне нужно, чтобы новые добавленные строки имели уникальные идентификаторы, а не по умолчанию new_row
. Кроме того, я не могу использовать вызов ajax для постоянного сохранения новых строк при добавлении из-за ограничений внешнего ключа. Я попытался следующий, но значение ID не меняется:Могу ли я изменить идентификатор недавно добавленной строки в jqGrid?
<input type="hidden" id="newRowIndex" />
$("#thisGrid").jqGrid('inlineNav', '#thisGridPager', {
edit: false,
addtext: "Add",
save: false,
cancel: false,
addParams: {
position: 'last',
addRowParams: {
keys: true,
oneditfunc: function (rowid) {
var newRowIndex = $("#newRowIndex").val();
if (!newRowIndex)
newRowIndex = 1;
$("#thisGrid").jqGrid('setCell', rowid, 'id', rowid + "_" + newRowIndex, '', '');
newRowIndex++;
$("#newRowIndex").val(newRowIndex);
}
}
}
});
Я просто хотел бы установить идентификатор вновь добавленной строку к new_row_1
, увеличивающемуся индексу для каждой вновь добавляемой строки. Возможно ли это, и если да, то как?
Решение
В дополнение к ответу Дина, я обнаружил, что она не работает, делая это в oneditfunc
из addRowParams
. Я обнаружил, что с помощью afterInsertRow
события jqGrid работает:
afterInsertRow: function (rowid, rowdata, rowelem) {
if (rowid == 'new_row') {
var newRowIndex = $("#newRowIndex").val();
if(!newRowIndex)
newRowIndex = 1;
var newRowId = rowid + "_" + newRowIndex;
$("#new_row").attr('id', newRowId);
newRowIndex++;
$("#newRowIndex").val(newRowIndex);
}
}
у меня возникают проблемы, делая эту работу. После динамического изменения идентификатора после строки вставки он не позволяет мне немедленно редактировать. Я использую inline Add. – Marvzz