正如你所看到的,我对这些东西很新。
我已经设置了一个jqGrid,在加载中很好。我正在尝试启用内联编辑,但我不确定如何设置。我的接收方法被调用,但我没有得到任何数据。
网格设置:
$(function () {
var lastsel;
$("#list").jqGrid({
url: '@Url.Action("ExampleData", "Home")',
datatype: 'json',
mtype: 'GET',
colNames: ['Namn', 'Adress', 'Stad'],
colModel: [
{ name: 'Name', index: 'Name', width: 130, editable: true },
{ name: 'Address', index: 'Address', width: 180, editable: true },
{ name: 'City', index: 'City', width: 80, editabel: true },
],
pager: '#pager',
rowNum: 10,
rowList: [10, 20, 30],
sortname: 'Name',
sortorder: 'desc',
viewrecords: true,
gridview: true,
width: 700,
onSelectRow: function (id) {
if (id && id !== lastsel) {
jQuery('#list').jqGrid('restoreRow', lastsel);
jQuery('#list').jqGrid('editRow', id, true);
lastsel = id;
}
},
editurl: '@Url.Action("Incoming", "Home")',
caption: 'Kontaktpersoner'
});
jQuery("#list").jqGrid('navGrid',"#prowed3",{edit:false,add:false,del:false});
Controller中的代码被调用。我想这是应该用于获取数据的editurl ...
public ActionResult Incoming(Object stuff)
{
return null;
}
难道我不能让json回到服务器,就像我加载它时发送给它的东西一样吗?
答案 0 :(得分:0)
控制器操作Incoming
不需要将任何数据返回到jqGrid,因为您仅将其用于编辑而不是添加新数据。重要的是,只有在出现错误的情况下,操作才会返回与错误相对应的HTTP状态代码。在jqGrid可以恢复以前的结果的情况下。
在某些情况下,如果成功编辑,您应该从服务器返回数据。例如,我通常在数据库的每个表中创建不可为空的rowversion(早期timestamp)列来管理乐观并发。该列的值将在表中的INSERT上自动创建,并在数据项的UPDATE处自动更新。所以我给jqGrid填充了一个额外的隐藏列,我从数据库中获取了其他数据。在行编辑时,rowversion
的旧值将用于验证数据是否已从其他位置更改。无论如何,在任何行编辑之后,需要将新版本的rowversion
发送到jqGrid。可以使用aftersavefunc
来读取服务器响应并更新jqGrid中保存的rowversion
的值。
以上说明仅是可能实现的粗略模式。您的主要问题的答案是:您不需要从Incoming
操作返回任何内容。如果您确实需要向jqGrid发送一些信息,可以使用aftersavefunc
{{1}}参数获取服务器响应并进行处理。