2

我有一个 ASP.NET 应用程序,可以将各种视图显示到一个大型蛋白质序列数据库中。当访问者浏览数据时,我希望他们能够在 GridView 行中选择一个 CheckBox 来标记序列,以便以后下载为压缩文本文件。我不想存储选择,因此它们应该对会话有效。

我现在的想法是向 GridView 添加一个 TemplateField,然后向其中添加一个 CheckBox。我打算处理检查事件并将序列 ID 存储在会话状态中。当用户前往下载页面时,我将获取会话数据,显示他们将要下载的序列列表,然后将文件一起发送。显然,我还必须在每次表单加载/页面切换时重新解析会话数据。

所以我实际上对此有几个问题:

1)我做的工作太多了吗?有没有更简单的方法来实现这个?

2)会话状态的所有往返服务器是否可能是性能问题?我可以在页面上放置一个“保存下载”按钮来批量处理它以帮助解决问题。处理检查事件似乎更具容错性,因为如果您离开,您不会意外丢失您的状态。

3) 是否可以按复选框列对 GridView 进行排序?我想先按复选框列排序,然后是当前排序的列(例如,如果 GridView 按姓氏排序,则按复选框列排序,然后按姓氏排序)。

万一这很重要,我正在使用 C#、.NET 3.5、VS2008,并且我正在使用从 SQLServerExpress 表创建 GridView 的简单拖放方式。

4

2 回答 2

1

通过页面方法使用 AJAX 来跟踪会话状态中的复选框状态。这将最大限度地降低往返成本。

我认为您无法通过 GridView 中的复选框进行排序,因为您需要指定排序列。您可以通过创建一个合成数据源来做到这一点,该数据源基本上将您保存的会话信息与表中的数据连接起来,但不能使用直接连接到表的 SQLDataSource。

于 2008-10-09T23:33:49.423 回答
0

我不确定是否有更简单的方法,但至于您的其他问题:

2.) 您需要自己决定稳健性和网络流量之间的平衡。如果您使用 check 事件,您将返回到服务器相当多的时间。如果您使用不同的事件(失去对网格的关注、明确的“更新/保存”按钮单击或导航到另一个页面),您会以可能丢失信息为代价来减少流量。这是一个没有“正确”答案的 UI 设计决策。

3.) 这是可能的,尽管它可能不是自动的。我知道 DataGridViews 将生成处理程序以自动按复选框列排序。我不确定使用常规 GridView 是否那么容易。您使用 GV 而不是 DGV 有什么原因吗?

于 2008-10-09T17:15:51.433 回答