看来你描述的问题是在你的代码误差小的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