【问题标题】:jqGrid inline navigator urlsjqGrid 内联导航器 url
【发布时间】:2012-06-30 11:50:44
【问题描述】:

现在玩 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 可以看到,请求成功,所以没有跨域问题,但是调用了Edit url。

【问题讨论】:

    标签: jquery ajax jqgrid


    【解决方案1】:

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

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

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

    【讨论】:

    • @sleepwalker:对不起,你在测试中犯了一个错误。试试the demo。因为我在 URL /MyAddRowAction/MyEditRowAction 下没有服务器组件,所以会看到错误。尽管如此,使用 Fiddler、Firebug、Developer Tools 等,您可以验证 jqGrid 在添加新行时将数据发布到/MyAddRowAction,并将数据发布到编辑的/MyEditRowAction。所以我建议的设置确实有效。
    • 是的,我也看过这个演示了。稍后会再试一次。
    • @sleepwalker:您能看到演示使用 不同的 URL 进行添加和编辑操作吗?
    • 我的示例在这里可用:jqgridtest.cloudapp.net:8080 在任何情况下 - 添加或删除,始终只调用 Edit 方法。我做错了什么?
    • @sleepwalker:您的错误很简单:请参阅我答案的“更新”部分。
    猜你喜欢
    • 2012-08-05
    • 2013-04-09
    • 1970-01-01
    • 2018-09-26
    • 2019-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多