【发布时间】:2015-10-23 07:38:52
【问题描述】:
我们正在使用 jqGrid 在我们的网站上显示一个交互式列表。我们有一个用于此列表的 ajax 数据调用的访问层文件——它接收特定格式的参数并返回 JSON 结果。此访问层需要 url 参数 functionName 和 functionParams(参数的 json 集合)。
我们在网格中提供内联编辑和删除功能,但问题是您只能为两者设置一个 URL。
真的,我们需要编辑 URL 看起来像这样:
editurl: 'ListAjaxAccess.cfm?functionName=editMember&functionParams={"id":"341","firstName":"John","lastName":"Smith"}'
删除 URL 看起来像这样:
editurl: 'ListAjaxAccess.cfm?functionName=deleteMember&functionParams={"id":"341"}'
但是,您只能使用 editurl 为内联编辑和内联删除设置一个 URL,它将表单与“操作”参数一起发布到页面以进行区分。在定义 editurl 时,我似乎找不到访问操作参数或表单值的方法,以便我可以动态构建 url。
我能看到的唯一解决方法是创建另一个文件 inlineListProcessing.cfm,将 editurl 设置为该文件,该文件将构造正确的格式并调用 ListAjaxAccess。我不想创建额外的中间文件 - 还有其他选择吗?有没有办法调用不同的url或者根据操作动态构建url字符串?
【问题讨论】:
-
我看到很多方法可以解决您的问题。重要的是要知道您使用哪个版本的 jqGrid 以及哪个分支?(free jqGrid - 我开发的分支、商业 Guriddo jqGrid JS 或版本 如何使用内联编辑和删除(
formatter: "actions"、inlineNav等)也很重要。如果你不使用免费的 jqGrid,那么实现将取决于你如何使用内联编辑和删除。 -
@Oleg - 我想我们正在使用免费的 jqGrid,版本 4.6
-
@Oleg 我是 jqGrid 的新手(我正在编辑其他人放在一起的网格),所以不确定您需要查看哪些代码。但这是 colModel 中 action 列的最后一个条目:
{ label:'<span style="margin-left: 20px;"class="ui-icon ui-icon-gear" title="Edit / Delete"></span>', name: '', search: false,width:60, fixed:true, sortable:false, resize:false, formatter:'actions',formatoptions:{keys:true}} -
您需要在请求中使用 HTTP GET 或 HTTP POST 吗? 在 URL 中放置参数是典型的仅用于 HTTP GET 请求,但一种使用 HTTP POST、HTTP PUT或 HTTP PATCH 通常用于编辑请求并将参数放在 HTTP 请求的 body 内。
-
@Oleg - 需要使用 GET。在问题中详述的 URL 格式中