到目前为止,真正享受jqGrid,但在内联编辑后保存单元格时仍然无法弄清楚如何将数据发送到服务器。尝试了许多不同的配置,并通过文档仔细研究,但仍然无法破解它。
jqGrid肯定正在调用我指定的网址,但我看不到另一边的任何一天。
还有一点奇怪的是,根据我的理解,调用应该获取编辑中指定的url并保存params,如果jqGrid配置中不存在,但似乎不是这种情况。当我从配置中删除editurl和cellurl时,将错误保存为'no url specified'。
提前致谢!
这是JS:
editParams = {
"oneditfunc": null,
"successfunc": null,
"url": '/submit/adjustments',
"extraparam": {
UserAdj: function() {
var sel_id = $('#rowed1').jqGrid('getGridParam', 'selrow');
var value = $('#rowed1').jqGrid('getCell', sel_id, '_id');
return 'test';
},
arg1 : 'test_it_out'
},
"aftersavefunc": null,
"errorfunc": null,
"afterrestorefunc": null,
}
saveparameters = {
"successfunc" : null,
"url" : 'submit/adjustments',
"extraparam" : {
UserAdj: function() {
var sel_id = $('#rowed1').jqGrid('getGridParam', 'selrow');
var value = $('#rowed1').jqGrid('getCell', sel_id, '_id');
return 'test';
}
},
"aftersavefunc" : null,
"errorfunc": null,
"afterrestorefunc" : null,
"restoreAfterError" : true,
"mtype" : "POST"
}
jQuery("#rowed1").jqGrid({
url: base_url + 'get/101/items',
datatype: "json",
jsonReader: {
root: function (obj) { return obj.items; },
id: 'id',
page: function () { return 1; },
total: function () { return 1; },
records: function (obj) { return obj.items.length; },
},
loadonce: true,
colNames:['Vendor', 'Name', 'Price', 'Last Cost', 'Qty OH', 'Qty OO', 'Wks Selling', 'Str Velocity', 'Fleet Velocity', 'Reccomended Buy', 'User Adjustment'],
colModel:[
{name: 'vendor_name'},
{name: 'name'},
{name: 'price'},
{name: 'cost'},
{name: 'qty_OH', sorttype:'int'},
{name: 'qty_OO', sorttype:'int'},
{name: 'str_wks_selling', sorttype:'int'},
{name: 'velocity', sorttype:'int'},
{name: 'flt_five_wk_vel', sorttype: 'int'},
{name: 'rec_buy', sorttype: 'int'},
{name: 'user_adj_order', editable: true}
],
onSelectRow: function(id){
if(id && id!==lastSel){
jQuery('#rowed1').restoreRow(lastSel);
jQuery("#rowed1").jqGrid('saveRow', lastsel, saveparameters);
lastSel=id;
}
},
ondblClickRow: function(id) {
jQuery('#rowed1').jqGrid('editRow', id, true, editParams);
},
rowNum:10,
rowList:[10,20,30],
pager: '#prowed1',
sortname: 'name',
viewrecords: true,
sortorder: "desc",
autowidth: true,
height: '100%',
'cellEdit': true,
'cellSubmit': 'remote',
editurl: '/submit/adjustments',
cellurl: '/submit/adjustments'
});
控制器代码:
@app.route('/submit/adjustments', methods=['GET', 'POST'])
def submit_adjustments():
print request.data
print request.args
return redirect(redirect_url())
答案 0 :(得分:3)
我在阅读时可以找到的一些错误:
cellEdit: true
选项。 您必须删除选项cellEdit: true
才能使用内联编辑。 onSelectRow
与saveRow
的行永不起作用,因为前一行包含restoreRow
。所以你首先丢弃编辑结果,然后尝试保存它。mtype : "POST"
中指定saveparameters
,而不能在editParams
中指定saveRow
。由于mtype : "POST"
直接调用不适用于您的代码,因此不会使用该选项。幸运的是,editRow
是内联编辑的默认选项。不过,我建议您使用所有内联编辑选项定义一个对象,并在您调用的所有方法中使用它(saveRow
,restoreRow
,UserAdj
)。 $('#rowed1').jqGrid('getCell', sel_id, '_id')
函数似乎很奇怪,因为它使用_id
,但网格中不包含名为gridview: true
的列。autoencode: true
选项。它提高了网格的性能。jQuery(this)
选项。如果您不使用它,输入数据将被解释为jQuery('#rowed1')
而不是lastSel
。