【问题标题】:Telerik Grid MVC and check all checkbox on all pagesTelerik Grid MVC 并选中所有页面上的所有复选框
【发布时间】:2012-07-12 06:22:17
【问题描述】:

在 Telerik 演示网站上,我们可以看到如何实现某种功能的示例:"check all checkbox in a grid's column"。但就我而言,它有两个缺点:

  1. 它没有选中所有页面上的所有复选框。
  2. 它没有保存不同页面上的复选框状态。

有人知道如何解决这些问题吗?提前致谢。

【问题讨论】:

    标签: asp.net-mvc checkbox telerik grid


    【解决方案1】:

    我无法对此进行测试,所以我不能 100% 确定,但看看 Telerik 的示例,它没有持久化的一个原因是因为网格的每个“页面”都需要回发,并且在控制器操作结果方法中,他们没有为绑定到网格的项目传递模型(或视图模型),他们只是将该项目列表返回给视图,因此它永远不会“保存”哪些项目被检查/选择,哪些不是。您应该能够通过使您的视图模型成为 HttpPost 操作结果方法的参数,然后在发布后将该列表传递回视图,以便它保留选择的项目而不是创建新项目来解决此问题。这不会解决不选择所有项目的问题,但它至少应该保留在整个页面中选择的项目。我认为它不适用于所有项目的原因是它只能选择当时实际显示的项目。您可能想要发布(或 ajax)来选择“所有”项目。

    【讨论】:

      【解决方案2】:

      只要我知道没有内置功能可以这样做。当您在第一页上选择记录并更改到第二页时,也会发生同样的问题,您会丢失之前选择的任何内容。

      要实现该功能,您有 2 个选项(我在以前的项目中都使用过)

      1) 在每次检查时,对您的一个控制器进行 Ajax 调用,并将您选择的任何内容存储在会话变量中(如果您有很多记录,这可能效率低下) 2) 创建一个 javascript 变量并将您的选择存储在那里,然后使用 json 变量或逗号分隔值字符串发送回控制器

      正如我所说,我已经使用了这两种方法,所以这取决于这是否适合你

      希望对你有帮助

      【讨论】:

        【解决方案3】:

        在网格中使用分页的主要原因之一是您不必从数据存储中检索所有数据并生成大量 HTML 来推送到客户端。

        根据我的经验,大多数用户都知道“全选”复选框仅选中当前页面上的项目。我还没有看到一个网站可以检查这样的复选框实际上会检查所有记录,即使是我看不到的记录。

        如果您的操作会影响超过当前记录的页面,我建议您添加一个按钮,明确指示该操作将影响所有记录,然后发送命令到您的数据层将执行该操作。这将表现得更好(您不必通过网络发送可能很长的 id 列表)并允许用户了解他们的操作的影响。

        【讨论】:

        • 感谢您分享您的意见。不幸的是,在我的情况下,用户会定期取消选中某些内容。因此,您的解决方案无法满足我客户的需求。
        猜你喜欢
        • 2015-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多