JQGrid:动态创建附加了id的RESTFul URI

时间:2013-06-22 22:28:33

标签: jqgrid

提交jqGrid表单时,我想附加' / theRecordId'到编辑用例的URL,REST样式。这不起作用:

jQuery("#noteList").jqGrid('navGrid','#pager',
    {addtitle:"Add New Note", clearAfterAdd: true},
    {addCaption:"Edit Note", mtype:"PUT"
        ,onclickSubmit: function(rp_ge, postdata) {
            rp_ge.url = editurl + '/' + postdata.id;  }
     },

    {addCaption:"Add New Note", mtype:"POST"}, 
    {}, 
    {}, 
    {}
  );

这导致" / [myurl] / undefined"被发送到服务器(其中[myurl]是正确的初始editurl)。 因此,动态网址操作似乎有效,但是' id'未定义。什么应该是' id'属性?我可以看到作为表单参数传递的内容是' id'。我也尝试过noteId,它是显示网格时输入数据的名称,也是我用于jsonReader.id的名称。也没有工作。这个属性名称应该来自哪里?

1 个答案:

答案 0 :(得分:2)

可能您使用的是为旧版jqGrid创建的示例。当前版本的jqGrid使用{gridid}_id作为id值的属性。例如,如果您使用的网格的idnoteList,则noteList_idpostdata onclickSubmit参数的id属性的名称。了解以后非常重要,在调用onclickSubmitbeforeSubmit后,属性名称将从noteList_id更改为id(请参阅the part of code)。

您可以将onclickSubmit的代码修改为以下

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

我包含了JavaScript函数encodeURIComponent的调用,以确保在id中使用任何字符的情况下对URL进行正确编码。