0

我已经使用 jqgrid 创建了一个网格,并且我正在使用表单对话框来添加、编辑和删除记录。

Edit Record i want to pass the id of a record along with the url即使表单数据将包含 , 作为i am using RESTful url so to update a record i have to pass相应的 ID。如下

www.example.com/eventInfo/10 , Method is PUT 

到目前为止我已经尝试过

jQuery("#eventGrid").jqGrid('navGrid','#pager', {}, //options 

        {
                height:280,
                reloadAfterSubmit:false , 

               // How can i add Event id over here from grid 

                url:'http://www.eample.com/evenInfo',
                mtype:'PUT'


        }, // edit options 
        {
                height:280,
                reloadAfterSubmit:false
        }, // add options 
        {
                reloadAfterSubmit:false
        }, // del options
        {

        } // search options 


    ); 

此外,我想以 JSON 格式将数据发送到服务器,而不是作为表单数据

4

1 回答 1

1

我在这里详细描述了在使用 RESTful 服务时应该做什么。回调onclickSubmit是动态修改 URL 并将其附加id到它的最佳位置。

github上的 jqGrid 当前代码将网格的 DOM 元素设置为this. 所以你将能够使用以下

onclickSubmit: function (options, postdata) {
    options.url += '/' + encodeURIComponent(postdata.[this.id + "_id"]);
}

在 jqGrid 的下一个(4.3.1 之后)版本中。在当前版本的 jqGrid 中,代码将如下所示

var $grid = $("#eventGrid");

// set defaults for Delete form
$.extend($.jgrid.del, {
    mtype: "DELETE",
    reloadAfterSubmit: false
    serializeDelData: function () {
        return ""; // don't send and body for the HTTP DELETE
    },
    onclickSubmit: function (options, postdata) {
        options.url += '/' + encodeURIComponent(postdata);
    }
});

// set defaults for Edit and Add forms
$.extend($.jgrid.edit, {
    height: 280,
    reloadAfterSubmit: false,
    onclickSubmit: function (options, postdata) {
        // options.gbox will be like "#gbox_eventGrid"
        var gridId = options.gbox.substr(6), // cut id from the gbox selector
            id = postdata.[gridId + "_id"];
        if (id !== "_empty") {
            options.url += '/' + encodeURIComponent(id);
        }
    },
    afterSubmit: function (responseData) {
        // in case of usage reloadAfterSubmit: false it's important
        // that the server returns id of the new added row
        // in the simplest form the server response should just contain
        // the id. In more complex response one should modify the next line
        // to extract the id only from the response
        return [true, '', responseData];
    }
});

// create jqGrid
$grid.jqGrid({
    // all other parameters
    editurl: "/eventInfo" // you should use relative paths
});

// create navigator layer
$grid.jqGrid('navGrid', '#pager', {/*navGrid options*/}, { mtype: 'PUT'}); 

在上面的代码中,我添加了afterSubmit这很重要,因为您使用了reloadAfterSubmit: false选项。

备注:我主要输入上面的代码或使用剪切和粘贴从另一个旧答案中复制一些部分。所以你应该在你的应用程序中测试上面的代码。

于 2012-03-29T10:18:36.687 回答