我使用表單編輯本地數據時,會丟失所有更改。我能夠編輯表單中的值並將值設置回行(使用setRowData)。 但是,當我來回頁面時,更改將丟失。的jqGrid:表格編輯作業保存到行,但尋呼向後或向前
如何將更改保存到網格中的行和底層源?後來我必須迭代行,驗證所有的錯誤(使用編輯表單)並將其發佈到服務器。
代碼:
var gridId = 'mygrid';
var pagerId = 'mygridpager';
var grid = $('#mygrid');
var pager = $('#mygridpager');
grid.jqGrid({
caption: caption,
colModel: getColModel(),
recreateForm: true,
hidegrid: true,
sortorder: 'desc',
viewrecords: true,
multiselect: true,
rownumbers: true,
autowidth: true,
height: '100%',
scrollOffset: 0,
datatype: 'local',
data: dataAsArray,
localReader: {
repeatitems: true,
cell: '',
id: 2
},
pager: '#' + pagerId,
pgbuttons: true,
rowNum: 5,
rowList: [2, 5, 7, 10, 250, 500]
});
grid.jqGrid('navGrid',
'#' + pagerId,
{
add: false,
del: false,
search: false,
edit: true,
edittext: 'Fix Error',
editicon: 'ui-icon-tag',
editurl: 'clientArray',
refreshtext: 'Refresh',
recreateForm: true
},
{
// edit options
editCaption: 'Fix Error',
editurl: 'clientArray',
recreateForm: true,
beforeShowForm: function(form) {
/* Custom style for elements. make it disabled etc */
},
onclickSubmit: function(options, postdata) {
var idName= $(this).jqGrid('getGridParam').prmNames.id;
// [UPDATED]
if (postdata[idName] === undefined) {
var idInPostdata = this.id + "_id";
postdata[idName] = postdata[idInPostdata];
postdata['row'] = postdata[idInPostdata];
}
$('#mygrid').jqGrid('setRowData', postdata.row, postdata);
if (options.closeAfterEdit) {
$.jgrid.hideModal('#editmod' + gridId, {
gb: '#gbox_' + gridId,
jqm: options.jqModal,
onClose: options.onClose
});
}
options.processing = true;
return {};
}
},
{}, // add options
{}, // del options
{} //search options
).trigger('reloadGrid');
您的幫助表示讚賞。
感謝
奧列格說:「從你的問題的代碼不用我在這裏引用的代碼。演示沒有您所描述的問題。」 –
@Oleg是的,我引用從您的演示http://www.ok-soft-gmbh.com/jqGrid/LocalFormEditing2.htm的代碼,但實際上借用了它的一部分,而不是整個onclickSubmitLocal功能。我不確定我錯過了什麼! –
@Oleg,我將演示與我的代碼進行了比較(上面已更新),並且無法使其工作。有些東西不見了,不知道是什麼! –