jqGrid,根据行数据动态设置编辑/删除URL

时间:2011-12-27 17:11:22

标签: jquery rest jqgrid

我需要让jqGrid动态设置编辑和放大删除网址,不仅取决于所选行的ID,还取决于其他行列的内容。 我发现的所有例子都涉及onclickSubmit,它只暴露了“id”字段。有什么提示吗?

3 个答案:

答案 0 :(得分:3)

编辑和删除只有一个值:'editurl'。所以你只需要更新那个。您可以使用setGridParam更改editurl的值,如下所示:

$("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo');

如果您想使用基于当前所选行内容的逻辑构建该URL,请执行以下操作:

onSelectRow: function(id){
    var rowData = $("#jqGridTable").getRowData(id);
    // example logic
    if (rowData['col1'] == 'foo' && rowData['col2'] == 'bar')
      $("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo/bar');
    else
      $("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo');
}

答案 1 :(得分:2)

我决定写我的答案只是因为Jake Feasel在他的回答中写道“编辑和删除只有一个值:'editurl'”。我认为有很多方法,最好的方法取决于其他要求。

通常,发送到服务器的数据由树部分

组成
  1. HTTP请求的类型,如POST,PUT或DELETE
  2. 网址的一部分直到'?'字符
  3. 直到'?'之后的URL参数字符
  4. HTTP请求的正文
  5. 默认情况下,jqGrid使用HTTP POST请求,并在HTTP请求的正文中放置有关id(或multiselect: true的情况下逗号分隔的id列表)的信息。如果更改HTTP请求的类型,则可能必须将发送到服务器的信息的位置从body更改为URL。如果在服务器端使用RESTful服务,则应该使用HTTP DELETE进行删除操作,并且在该情况下具有空主体。

    以任何方式使用一些回调函数(事件)来填充有关编辑或删除行的其他信息。在回调函数内部,可以使用getRowDatagetCell methods来获取删除或编辑行的其他单元格的附加信息。有时取决于具有哪些方法的确切情况将无法工作。如果要在编辑期间尝试从包含更改为<input><select>或其他控件的单元格中获取信息,则会进行内联编辑的单元格编辑。如果有其他技巧可以用作解决方法(例如,请参阅here)。

    一种方法是更改​​onSelectRow内的URL,因为删除或编辑最后选择的行。我只会使用$(this)而不是$("#jqGridTable")

    另一种方法是更改​​url内的onclickSubmit(请参阅herehere)。

    只有当需要更改URL的部分直到'?'时,我建议使用的两种方式字符。如果您只需要在paramNama=paramValue除以&之类的网址中添加其他参数,则可以更好地使用editDatadelData参数。参数可以包含函数。请参阅herehere

    如果您需要更改请求的正文,可以使用serializeDelDataserializeEditData

    所以有很多方法,哪种方式最好取决于你的其他要求。

答案 2 :(得分:1)

我认为上面有一个错字,。 它应该是

$("#jqGridTable").setGridParam({'editurl':'myNewUrl/foo/bar'}); 

不是

$("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo/bar');