2011-11-17 71 views
0

我有一点独特的问题。我正在使用GridView来显示来自数据库的信息。这个GridView的要求是它总是可编辑的,所以我在ItemTemplates中有文本框,并且想要在单击按钮时保存这些值。GridView排序而不会丢失用户修改

这一切都很好。

问题是我想要排序(并最终分页)工作和打击问题。如果我从一个ObjectDataSource绑定GridView,这显然不起作用,因为它在重新排序之前重新绑定了数据源,并且我失去了任何修改后的值。如果我绑定来自DataTable的GridView并尝试将其存储在Session变量中,它仍然不起作用,因为任何修改的值都不在会话变量中。

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

回答

1

您可以实现GridView的客户端排序,这会让您的UI更快感受到额外的好处。有a blog post on sorting with jQuery你可以尝试,但我没有亲自使用建议的方法。

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

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

+0

感谢您的回复。我曾考虑过对Sort进行保存,这会让事情变得更简单,但在逻辑上看起来非常不正确。用户不会期望一种排序来保存数据。我会研究客户端使用jQuery进行排序,并标记答案,如果它最终为我工作。感谢您的建议! – novacara

+0

@novacara我认为排序保存是否符合逻辑意义很大程度上取决于您的用户界面反馈和整体交互模型 - 请考虑熟悉的系统(如Gmail),并且您可以认识到存在需要不断保存的情况。但是,您也可以考虑暂时保存数据而不提交数据:使用备用商店,标记数据等,以便差异对用户透明。 –

+0

我想我会去用jQuery解决方案。我需要一些额外的帮助来定制我的具体gridview,因为它有实际的控件(文本框,复选框),而不仅仅是文本,但我会问一个后续问题。谢谢您的帮助! – novacara

相关问题