我需要让jqGrid动态设置编辑&删除网址,不仅取决于选中的行的ID,还取决于其他行的列的内容。 我发现的所有例子都涉及到仅暴露“id”字段的onclickSubmit。有小费吗?jqGrid,根据行数据动态设置编辑/删除网址
回答
编辑和删除只有一个值:'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');
}
我决定写我的答案只是因为杰克Feasel写道“只有一个值编辑和删除:'editurl'”在他的答案。我认为有很多方法,最好的方法取决于其他要求。
通常发送到服务器的数据从树份
- 类型等POST HTTP请求组成,PUT或DELETE
- 的URL,直到所述的部分“?”字符
- 直到'?'后面的URL参数字符
- HTTP请求的主体
每默认的jqGrid使用HTTP POST请求和放置信息有关的ID(或逗号在multiselect: true
壳体分离id列表)在体的HTTP的请求。如果您更改HTTP请求的类型,则可能必须更改从主体发送到服务器的信息的位置。在服务器端使用RESTful服务的情况下,应该使用HTTP DELETE进行删除操作,并且在案例中具有空主体。
以任何方式使用一些回调函数(事件)来填充有关编辑或删除行的其他信息。在回调函数内部,可以使用getRowData
或getCell
methods来获取删除行或编辑行其他单元的附加信息。有时取决于具有哪种方法的确切情况将不起作用。如果您尝试从单元格中获取信息,在编辑过程中将更改为<input>
,<select>
或其他控件,将会出现内联编辑的单元格编辑。如果还有其他技巧可以用作解决方法(例如参见here)。
其中一种方法是更改onSelectRow
中的URL,因为可以删除或编辑最后一个选定的行。我只会使用$(this)
而不是$("#jqGridTable")
。
另一种方法是更改onclickSubmit
(参见here和here)中的url
。
只有当需要更改URL部分直到'?'时,我推荐使用这两种方式。字符。如果您只需要向url添加其他参数,如paramNama=paramValue
除以&
,则可以更好地使用editData或delData参数。参数可以包含功能。见here或here。
如果您需要更改机构的请求,您可以使用serializeDelData
或serializeEditData
。
所以有很多方法,哪一个最好的方法取决于你的其他要求。
我通常也会使用$(this)而不是$('#jqGridTable'),但是如果没有完整的上下文,我认为这会更令人困惑。 –
我想上面有一个错字,。 应该
$("#jqGridTable").setGridParam({'editurl':'myNewUrl/foo/bar'});
不
$("#jqGridTable").setGridParam('editurl', 'myNewUrl/foo/bar');
- 1. JQGrid,编辑网址
- 2. jqGrid - 编辑数据
- 3. JQGrid动态行可编辑
- 4. jqGrid设置单元格数据,同时内联编辑活动
- 5. jqgrid编辑删除按钮行
- 6. 根据动态字段更改网址
- 7. jqGrid:发送编辑数据
- 8. jqGrid的ASP.net C#添加编辑删除数据库
- 9. 如何添加/编辑/删除MySQL数据库与jqGrid的
- 10. 扰网址动态数据
- 11. jQgrid根据内容删除值
- 12. 用于删除/编辑Javascript数据的动态按钮(CodeIgniter)
- 13. 在Silverlight数据网格中编辑,添加和删除行?
- 14. 如何动态编辑mysql数据行?
- 15. 编辑数据网格行
- 16. JQGrid为添加,编辑,删除设置不同的URL
- 17. 根据条件删除数据行
- 18. 根据列的动态数量删除重复的行
- 19. jqGrid删除行在编辑模式下,并通过其他数据
- 20. 根据日期自动编辑行
- 21. 如何根据最小截断值动态删除数据
- 22. jqgrid设置单元格可动态编辑假条件
- 23. jqgrid内嵌编辑:动态设置可正确编辑另一列的列
- 24. 根据您当前的网址进行动态链接
- 25. datatable:编辑和删除数据
- 26. 数据表可编辑删除
- 27. 根据当前位置删除数据库行
- 28. 动态数据到Jqgrid
- 29. 根据条件删除行
- 30. 根据列值删除行
+1我同意你的看法。我认为只有这不是**唯一的方法**。 – Oleg
我从来没有写过“唯一的办法”就是这样做,尽管听起来就像我说的那样。当我说“你只需要更新那个”时,我的意思并不是它是完成这个的唯一手段,而是它是最简单的方法。 –
好吧,我不会重复你的话,但'editurl'并不是唯一可以修改的参数。如果在[prmEdit],[navGrid](http://www.trirand.com/jqgridwiki/doku.php?id=wiki:navigator#definition)的'prmAdd'或'prmDel'参数中使用'url'属性, 'editurl'将被忽略。但我不想太过正式。我之前说过,你建议的方式应该工作,你写了关于'getRowData'的用法,这似乎是问题的主要问题。 – Oleg