我有一个ASP.NET应用程序,可以在一个较大的蛋白质序列数据库中显示各种视图。当访问者浏览数据时,我希望他们能够在GridView行中选择一个CheckBox来标记序列,以便以后下载为压缩文本文件。我不想存储选择,因此它们应该对会话有效。
我现在的想法是将一个TemplateField添加到GridView,然后添加一个CheckBox。我打算处理检查事件并将序列ID存储在会话状态中。当用户前往下载页面时,我将获得会话数据,显示他们即将下载的序列列表,然后发送文件。显然,我还必须在每个表单加载/页面切换上重新分析会话数据。
所以我实际上有几个问题:
1)我做了太多工作吗?有没有更简单的方法来实现它?
2)会话状态到服务器的所有往返行程是否都可能是性能问题?我可以在页面上放一个“保存下载”按钮来批量处理它。处理检查事件似乎更容错,因为如果你离开,你不会意外地失去你的状态。
3)是否可以通过选中的框列对GridView进行排序?我想先选中复选框列,然后排序当前排序列(例如,如果GridView按姓氏排序,按检查列排序,再按姓氏排序)。
如果重要,我正在使用C#,.NET 3.5,VS2008,我正在使用从SQLServerExpress表创建GridView的简单拖放方式。
答案 0 :(得分:1)
通过页面方法使用AJAX来跟踪会话状态中的复选框状态。这将最大限度地降低往返成本。
我认为您无法通过GridView中的复选框进行排序,因为您需要指定排序列。您可以通过创建一个合成数据源来实现此目的,该数据源基本上将保存的会话信息与表中的数据相连,但不能使用直接连接到表的SQLDataSource。
答案 1 :(得分:0)
我不确定有更简单的方法,但至于你的其他问题:
2。)您需要自己决定稳健性和网络流量之间的平衡。如果你使用check事件,你将会回到服务器上。如果您使用不同的事件(失去对网格的关注,明确的“更新/保存”按钮单击或导航到另一个页面),您将以牺牲可能丢失的信息为代价来减少流量。这是一个没有“正确”答案的UI设计决策。
3。)这是可能的,虽然它可能不是自动的。我知道DataGridViews将生成处理程序以自动按复选框列排序。我不确定使用常规GridView是如此简单。您是否有使用GV而不是DGV的原因?