【问题标题】:GridView Sorting without losing user modificationsGridView 排序不丢失用户修改
【发布时间】:2023-03-09 07:48:01
【问题描述】:

我有一个独特的问题。我正在使用 GridView 来显示来自数据库的信息。此 GridView 的要求是它始终是可编辑的,因此我在 ItemTemplates 中有 TextBoxes,并且希望在单击按钮时保存这些值。

一切都很好。

问题是我试图让排序(并最终分页)正常工作并遇到问题。如果我从 ObjectDataSource 绑定 GridView,这显然不起作用,因为它会在排序之前重新绑定数据源,并且我会丢失任何修改后的值。如果我从 DataTable 绑定 GridView 并尝试将其存储在 Session 变量中,它 仍然 不起作用,因为任何修改的值都不在 session 变量中。

我真的只是在寻找关于我可以做些什么来排序(和稍后页面)而不丢失用户修改的值的建议。我意识到大多数人不会一次修改 Gridview,所以这是一个奇怪的问题。

【问题讨论】:

    标签: asp.net sorting gridview


    【解决方案1】:

    您可以实现 GridView 的客户端排序,这将具有使您的 UI 感觉更快的额外好处。有a blog post on sorting with jQuery你可以试试,虽然我没有亲自使用过建议的方法。

    或者,您可以在编辑时通过 AJAX 将值发送回服务器,并将它们(临时)保存在会话、数据库或在您的场景中有意义的位置。您显然需要在排序时检索它们。

    最后一个选择是将您的值保存在由 sort 命令引起的回发中。大多数情况下,您会按照处理 TextBoxes 的 OnTextChanged 事件和(如上)将值保存到临时存储区来做一些事情。您不希望这些文本框自动回发 - 它们只会等待回发,例如由您的排序事件引起的回发。在这种情况下,您还可以使用在保存事件期间填充的临时存储,以避免重复工作。

    【讨论】:

    • 感谢您的回复。我曾考虑在 Sort 上进行保存,这会使事情变得更容易,但在逻辑上似乎非常不正确。用户不会期望排序来持久化数据。我将使用 jQuery 研究客户端排序并标记答案,如果它最终对我有用。感谢您的建议!
    • @novacara 我认为保存排序是否具有逻辑意义在很大程度上取决于您的 UI 反馈和整体交互模型 - 想想 Gmail 等熟悉的系统,您会发现在某些情况下会持续保存是可取的。但是,您也可以考虑暂时保存数据而不提交数据:使用备用存储、标记它等,以便差异对用户是透明的。
    • 我想我会选择 jQuery 解决方案。我将需要一些额外的帮助来定制我的特定网格视图,因为它内部有实际的控件(文本框,复选框),而不仅仅是文本,但我会问一个后续问题。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2018-02-23
    • 2011-06-23
    • 2013-08-16
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多