2011-12-27 69 views

回答

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

+1我同意你的看法。我认为只有这不是**唯一的方法**。 – Oleg

+0

我从来没有写过“唯一的办法”就是这样做,尽管听起来就像我说的那样。当我说“你只需要更新那个”时,我的意思并不是它是完成这个的唯一手段,而是它是最简单的方法。 –

+0

好吧,我不会重复你的话,但'editurl'并不是唯一可以修改的参数。如果在[prmEdit],[navGrid](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator#definition)的'prmAdd'或'prmDel'参数中使用'url'属性, 'editurl'将被忽略。但我不想太过正式。我之前说过,你建议的方式应该工作,你写了关于'getRowData'的用法,这似乎是问题的主要问题。 – Oleg

2

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

通常发送到服务器的数据从树份

  1. 类型等POST HTTP请求组成,PUT或DELETE
  2. 的URL,直到所述的部分“?”字符
  3. 直到'?'后面的URL参数字符
  4. HTTP请求的主体

每默认的jqGrid使用HTTP POST请求和放置信息有关的ID(或逗号在multiselect: true壳体分离id列表)在的HTTP的请求。如果您更改HTTP请求的类型,则可能必须更改从主体发送到服务器的信息的位置。在服务器端使用RESTful服务的情况下,应该使用HTTP DELETE进行删除操作,并且在案例中具有空主体。

以任何方式使用一些回调函数(事件)来填充有关编辑或删除行的其他信息。在回调函数内部,可以使用getRowDatagetCellmethods来获取删除行或编辑行其他单元的附加信息。有时取决于具有哪种方法的确切情况将不起作用。如果您尝试从单元格中获取信息,在编辑过程中将更改为<input><select>或其他控件,将会出现内联编辑的单元格编辑。如果还有其他技巧可以用作解决方法(例如参见here)。

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

另一种方法是更改​​onclickSubmit(参见herehere)中的url

只有当需要更改URL部分直到'?'时,我推荐使用这两种方式。字符。如果您只需要向url添加其他参数,如paramNama=paramValue除以&,则可以更好地使用editDatadelData参数。参数可以包含功能。见herehere

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

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

+0

我通常也会使用$(this)而不是$('#jqGridTable'),但是如果没有完整的上下文,我认为这会更令人困惑。 –

1

我想上面有一个错字,。 应该

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

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