我需要让jqGrid动态设置编辑和放大删除网址,不仅取决于所选行的ID,还取决于其他行列的内容。 我发现的所有例子都涉及onclickSubmit,它只暴露了“id”字段。有什么提示吗?
答案 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'”。我认为有很多方法,最好的方法取决于其他要求。
通常,发送到服务器的数据由树部分
组成默认情况下,jqGrid使用HTTP POST请求,并在HTTP请求的正文中放置有关id(或multiselect: true
的情况下逗号分隔的id列表)的信息。如果更改HTTP请求的类型,则可能必须将发送到服务器的信息的位置从body更改为URL。如果在服务器端使用RESTful服务,则应该使用HTTP DELETE进行删除操作,并且在该情况下具有空主体。
以任何方式使用一些回调函数(事件)来填充有关编辑或删除行的其他信息。在回调函数内部,可以使用getRowData
或getCell
methods来获取删除或编辑行的其他单元格的附加信息。有时取决于具有哪些方法的确切情况将无法工作。如果要在编辑期间尝试从包含更改为<input>
,<select>
或其他控件的单元格中获取信息,则会进行内联编辑的单元格编辑。如果有其他技巧可以用作解决方法(例如,请参阅here)。
一种方法是更改onSelectRow
内的URL,因为删除或编辑最后选择的行。我只会使用$(this)
而不是$("#jqGridTable")
。
另一种方法是更改url
内的onclickSubmit
(请参阅here和here)。
只有当需要更改URL的部分直到'?'时,我建议使用的两种方式字符。如果您只需要在paramNama=paramValue
除以&
之类的网址中添加其他参数,则可以更好地使用editData或delData参数。参数可以包含函数。请参阅here或here。
如果您需要更改请求的正文,可以使用serializeDelData
或serializeEditData
。
所以有很多方法,哪种方式最好取决于你的其他要求。
答案 2 :(得分:1)
我认为上面有一个错字,。 它应该是
$("#jqGridTable").setGridParam({'editurl':'myNewUrl/foo/bar'});
不是
$("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo/bar');