从MVC3中的jqGrid到Controller的数据?

时间:2012-03-07 11:29:57

标签: jquery asp.net-mvc jqgrid

正如你所看到的,我对这些东西很新。

我已经设置了一个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回到服务器,就像我加载它时发送给它的东西一样吗?

1 个答案:

答案 0 :(得分:0)

控制器操作Incoming 不需要将任何数据返回到jqGrid,因为您仅将其用于编辑而不是添加新数据。重要的是,只有在出现错误的情况下,操作才会返回与错误相对应的HTTP状态代码。在jqGrid可以恢复以前的结果的情况下。

在某些情况下,如果成功编辑,您应该从服务器返回数据。例如,我通常在数据库的每个表中创建不可为空的rowversion(早期timestamp)列来管理乐观并发。该列的值将在表中的INSERT上自动创建,并在数据项的UPDATE处自动更新。所以我给jqGrid填充了一个额外的隐藏列,我从数据库中获取了其他数据。在行编辑时,rowversion的旧值将用于验证数据是否已从其他位置更改。无论如何,在任何行编辑之后,需要将新版本的rowversion发送到jqGrid。可以使用aftersavefunc来读取服务器响应并更新jqGrid中保存的rowversion的值。

以上说明仅是可能实现的粗略模式。您的主要问题的答案是:您不需要从Incoming操作返回任何内容。如果您确实需要向jqGrid发送一些信息,可以使用aftersavefunc {{1}}参数获取服务器响应并进行处理。