【问题标题】:Delete jqGrid rows client-side only and sending deleted rows to ASP.NET MVC on form POST仅在客户端删除 jqGrid 行并在表单 POST 上将已删除的行发送到 ASP.NET MVC
【发布时间】:2010-05-11 16:38:15
【问题描述】:

这个问题可能令人困惑,我深表歉意。我不知道如何最好地表达它。

我在表单内的 jQueryUI 对话框中使用 jqGrid。用户将使用此表单来创建和编辑事件。

编辑后,用户可以单击按钮打开一个对话框,显示已保存的事件位置网格。我想让他们能够删除已保存的位置,但我不想立即在服务器上删除它们,因为他们可能决定不在主窗体上保存更改。

我想做的是构建一个数组,其中包含他们使用默认删除导航器删除按钮删除的位置的 ID。当我确认删除行时,它需要一个editurl,但我现在不想删除它们。

有没有一种好方法可以跟踪他们已删除的记录,然后在他们保存活动后将其删除?我想知道是否应该创建一个服务器端集合/文件并在事件本身保存后读取它;我不知道最好的方法是什么。

提前谢谢你:)

【问题讨论】:

    标签: javascript jquery asp.net-mvc jqgrid


    【解决方案1】:

    以下是一些关于如何实现此目的的高级指南:

    您可以创建自己的按钮,而不是使用导航器的删除按钮 - 将其命名为 delete 并为其提供自定义事件处理程序。然后,当删除一行时,将其 ID 添加到已删除行的数组中,并更新包含所有已删除行的表单中的隐藏字段。当表单被 POST 回服务器时,该字段可用于执行实际删除操作。

    要将 ID 保存到隐藏字段,您可以使用 json2.js 中的 stringify 方法将其写入 JSON。然后,您需要使用 ASP.NET MVC 解码 JSON 数组以提取 ID。

    这有帮助吗?

    【讨论】:

    • 很好,谢谢贾斯汀!这可能需要它自己的 SO 问题,但是在使用隐藏字段时,我可以将字段的值设置为所有数组值还是应该一一进行(每个数组值一个隐藏字段)。我担心我可能会将大量数据发送回服务器。不过,我会研究 stringify - 再次感谢 :)
    • 不客气,很高兴为您提供帮助 :) 我建议使用 stringify 将字段的值设置为所有数组值。或者,您可能能够动态创建隐藏字段,和/或只有一定数量。但是将stringify 与单个一起使用可以很好地平衡简单性和灵活性。
    • 我坚持不使用stringify 的唯一原因是因为我有一个自定义模型绑定器,它已经为我绑定了所有内容。尽管如此,它还是值得一看的,因为我不是创建十亿个隐藏字段的超级粉丝 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    相关资源
    最近更新 更多