jqGrid内联导航器网址

时间:2012-06-28 21:52:31

标签: jquery ajax jqgrid

现在玩jqGrid。并提出一些问题。

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

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

是否可以将这些网址分开用于不同的操作,并将带有行数据的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/有相对网址添加和编辑。但只有Edit被调用。

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

1 个答案:

答案 0 :(得分: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。您应该在同一个ASP.NET站点中包含Web服务Service1.svc (仅包含在同一个项目中)。之后,您将能够使用相对网址路径,例如url:"/Service1.svc/web/AddData"url:"/Service1.svc/web/EditData",您的代码就可以使用。