【问题标题】:JqGrid inline editing confirm box dialogJqG​​rid 内联编辑确认框对话框
【发布时间】:2010-10-19 17:09:28
【问题描述】:

我正在 jqgrid 上进行一些内联​​编辑。客户端希望出现一个确认对话框,表明用户确实想要保存所做的更改(类似于删除的工作方式)。在查看http://github.com/tonytomov/jqGrid/blob/master/js/grid.inlinedit.js 时,我注意到editRow 命令采用这些参数。

table.jqGrid('editRow', id, true/keys/, function(){alert('1');}/oneditfunc/, 功能(){警报('1.5'); return false;}/successfunc/, 空/网址/, null/extraparam/, function(){alert('2');}/aftersave/, function(){alert('3');}/错误/, function(){alert('4');}/afterrestore/);

当我开始编辑时 oneditfunc 被调用。在发布到服务器successfunc 之后调用,然后调用afterrestore。好像应该有 beforeSave 之类的吧?

这些参数被使用并发送到 saveRow 函数。看起来没有任何地方可以注入方法来中止数据的发送或弹出模式窗口以确认所做的更改。

这是我的疏忽还是我必须在 jqgrid 中加入的一些功能?

【问题讨论】:

    标签: jquery jqgrid jquery-ui


    【解决方案1】:

    解决问题的一种方法是使用custom validation editrules。在将数据发送到服务器之前,将对其进行验证。该方法的唯一缺点是,如果用户决定不发送数据,则会显示带有您主要生成的文本的错误消息。

    另一种方法是将serializeRowDataerrorfunceditRow 的参数)一起使用。通常,jqGrid 的serializeRowData 参数将用于修改或编码将发送到服务器的数据。因此,如果您在函数内部显示一个确认对话框并且在这种情况下没有向服务器发送数据或虚拟错误数据,则服务器可以用已知错误进行回答。然后在您的 errorfunc 中,您可以忽略此特殊错误。因此,您可以通过错误消息解决问题。毕竟因为错误 jqGrid call "restoreRow" 会恢复原来的数据。

    【讨论】:

    • 现在我正在探索单元格编辑,因为它有一个 beforeSubmitCell 事件。我仍在试图弄清楚如何访问默认模式弹出窗口,但我开始认为我将不得不为我的目的创建一个新的。代码重用性就这么多了。
    • 但这看起来不太有用,因为 beforeSubmitCell 无法取消帖子。令人沮丧。
    • 并且我希望能够取消帖子而不用虚拟请求打扰服务器。
    • @Steve:您可以覆盖ajax 请求中与ajaxRowOptions 相关的任何参数(请参阅github.com/tonytomov/jqGrid/blob/master/js/…),例如url。因此,如果您不想这样做,则无法将数据发送到服务器。
    • @Oleg,我在试图找出 ajaxRowOptions 和 ajaxOptions 的道具时度过了一段糟糕的时光......这是否记录在任何地方?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多