使用表单对话框在编辑URL中添加额外参数

时间:2012-03-29 07:30:05

标签: jquery jqgrid jqgrid-php

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

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

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格式向服务器发送数据,而不是作为表单数据

1 个答案:

答案 0 :(得分:1)

我描述了here详细说明了在使用RESTful服务时应该做些什么。回调onclickSubmit是动态修改网址并将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选项。

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