Telerik Grid MVC并检查所有页面上的所有复选框

时间:2012-07-12 13:28:18

标签: asp.net-mvc checkbox telerik grid

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

  1. 没有勾选所有页面上的所有复选框。
  2. 它没有在不同页面上保存复选框状态。
  3. 有人知道如何解决这些问题吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

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

希望有所帮助

答案 2 :(得分:1)

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

根据我的经验,大多数用户都明白“全选”复选框仅检查当前页面上的项目。我没有看到一个网站,检查这样的复选框实际上会检查所有记录,甚至是那些我看不到的记录。

如果您的操作影响超过当前记录页面,我建议您添加一个按钮,清楚地表明该操作会影响所有记录,然后发送命令到您的数据层将执行该操作。这样做会更好(您不必通过线路发送可能很长的ID列表)并允许用户了解其操作的影响。