看來你描述的問題是在你的代碼誤差小的jqGrid中的代碼的bug混合(見線開始the place)。
代碼中的問題是,您不像addParams
那樣正確設置editParams
。正確的用法應該是:
$("#grid").jqGrid('inlineNav', '#grid_toppager', {
addParams: {
useDefValues: true,
addRowParams: {
keys: true,
extraparam: { _dokdata: FormData }
}
},
editParams: {
extraparam: { _dokdata: FormData }
},
add: true,
edit: false,
save: true,
cancel: true
});
function FormData() {
return JSON.stringify($("#_form").serializeArray());
}
在jqGrid的的代碼的當前版本的問題是,在我看來這jqGrid的在 保存按鈕使用(見here)只有editParams.extraparam
設置使用的,而不是使用諸如addParams.addRowParams.extraparam
之類的東西。我在inlineNav
的addParams.addRowParams
參數中添加了keys: true
選項。因此,如果用戶將通過按輸入來保存更改,並且將使用editParams.extraparam
來保存行,則jqGrid的當前實現(v 4.3.0)將使用addParams.addRowParams.extraparam
,如果通過「保存」按鈕保存行導航按鈕。
已更新:我測試了代碼,發現jqGrid v 4.3.0中有一個bug。我建議在the feature request引入$.jgrid.inlineEdit
設置,可以像其他非常實用的設置$.jgrid.edit
一樣使用,但是在內聯而不是表單編輯的情況下。在jqGrid 4.3.0中實現了功能請求 ,但實現包含一個錯誤。
修復bug應該從
o = $.extend($.jgrid.inlineEdit, settings, args[0]);
33,117和304更換線路
o = $.extend(true, {}, settings, $.jgrid.inlineEdit, args[0]);
如何從the demo的bug修復後正確地看到,所有的工作。
UPDATED 2:上述修復與the fix相同,但仍不正確。要修復這個錯誤,必須在代碼中進行更多的更改。例如,該線32-36(內側的editRow
)可從
if(args[0] && typeof(args[0]) == "object" && !$.isFunction(args[0])) {
o = $.extend($.jgrid.inlineEdit, settings, args[0]);
} else {
o = settings;
}
被改變以例如下列
if(args[0] && typeof(args[0]) == "object" && !$.isFunction(args[0])) {
settings.keys = false; // keys is args[0] and it's an object
o = $.extend(true, {}, settings, $.jgrid.inlineEdit, args[0]);
} else {
o = settings;
}
以同樣的方式的線116-120(內側的saveRow
)
if(args[0] && typeof(args[0]) == "object" && !$.isFunction(args[0])) {
o = $.extend($.jgrid.inlineEdit, settings, args[0]);
} else {
o = settings;
}
可更改爲
if(args[0] && typeof(args[0]) == "object" && !$.isFunction(args[0])) {
settings.successfunc = null; // successfunc is args[0] and it's an object
o = $.extend(true, {}, settings, $.jgrid.inlineEdit, args[0]);
} else {
o = settings;
}
和線304
o = $.extend($.jgrid.inlineEdit, settings, args[0]);
可改爲
o = $.extend(true, {afterrestorefunc: null}, $.jgrid.inlineEdit, args[0]);
更新12:我張貼my suggestion到trirand關於 「刪除」 的問題。查看使用修復程序here的相同演示。
我在代碼之前固定了'<! - language:lang-js - >'的位置。現在您會看到代碼將使用特定於JavaScript的顏色進行格式化。如果您使用額外的jquery或javascript標籤,則不需要添加'<! - language:lang-js - >'以使用良好的格式(帶顏色)代碼。 – Oleg 2011-12-18 21:23:57