0

现在玩 jqGrid。并且有一些问题。

我想做的事情很简单。我为 CRUD 操作创建了自定义 Web 服务。使用 ajax 请求,我得到 JSON 并将其绑定到指定的 jqGrid。

现在我想使用他们新的内联导航器来创建新记录并更新现有记录。据我所知,有“editurl”属性来设置更新链接。但它也被用于添加项目。

是否可以将这些 url 分开用于不同的操作并将带有行数据的 JSON 传递给我的服务?或者更好的事件——在某种处理程序中只为服务创建自定义 Ajax 请求?

尝试使用 inlineNav 添加参数,但设法仅为“oneditfunc”设置处理程序。

使用表单编辑没有这样的问题。也许我错过了什么?

UPD:设法使用自定义“保存”和“取消”按钮对其进行自定义,我在其中发送所需的请求。但是希望,有没有更简单的解决方案?

UPD我的示例可在此处获得:http: //jqgridtest.cloudapp.net :8080/在任何情况下 - 添加或删除,始终只调用 Edit 方法。我究竟做错了什么?

UPD所描述的链接问题与跨域策略没有任何共同之处。当存在跨域问题时 - 还有另一个错误,如“405 Method not allowed”等。部署的示例服务也有跨域请求的解决方法。是的,它在 IE 中不起作用,因为在我的客户端示例中,我没有添加$.support.cors=true使其在 IE 中起作用。您也可以在这里查看:http: //jsbin.com/uxered/7/那里有相对 url 添加和编辑。但只有 Edit 被调用。

还有使用 jqgridtest.cloudapp.net 的视频证明:http ://www.youtube.com/watch?v=zivlvsV1r98&feature=youtu.be如您所见,请求成功,所以没有跨域问题,但是调用编辑 url。

4

1 回答 1

0

方法inlineNavaddParamseditParams选项。该方法addRow具有addRowParams选项,可用于指定添加行期间使用的editRow选项。所以以下参数应该可以工作

$("#grid").jqGrid("inlineNav", "#pager", {
    addParams: {
        addRowParams: {
            keys: true,
            url: "/MyAddRowAction"
        }
    },
    editParams: {
        keys: true,
        url: "/MyEditRowAction"
    }
});

更新:您的演示中的错误非常简单:您使用url:"http://jqgridtest.cloudapp.net:81/Service1.svc/web/AddData"url:"http://jqgridtest.cloudapp.net:81/Service1.svc/web/EditData"在适用于http://jqgridtest.cloudapp.net:8080/. Ajax 中存在名为Same origin policy的安全限制。Service1.svc 您应该在同一个 ASP.NET 站点中包含 Web 服务(只包含在同一个项目中)。之后,您将能够使用相对URL 路径url:"/Service1.svc/web/AddData"url:"/Service1.svc/web/EditData"并且您的代码将正常工作。

于 2012-06-29T07:47:31.623 回答