将数据表从一个aspx页面转移到另一个C#

时间:2009-12-10 10:44:44

标签: c# asp.net datatable transfer

我有一个问题,希望有人可以回答,将Datatable转移到另一个.aspx页面的最佳方法是什么,以便它可以在C#中收集并绑定到Gridview?

  • 缓存?
  • 会话?
  • 缓存?

7 个答案:

答案 0 :(得分:5)

没有单一的“最佳” - 因为它取决于应用程序的结构和您要传输的数据块的大小。它还取决于你在两端用它做什么。

在最基本的级别,答案是在会话状态 - Cookie是不合适的,因为(推广)您想要移动的数据块太大。缓存是为了避免你不得不重新加载东西,但是(再次推广)你不应该将它用于你需要的东西,当你回到看起来离开你的会话时。< / p>

当然,假设您保留数据表。另一种方法是只保留允许你从商店检索数据表的键值 - 所以你为第一页加载表一次,做东西,坚持键值导航到第二页,从存储中重新加载数据表,然后根据需要进行此类更新。这在概念上是一个更好的模型(它在开销或序列化/反序列化表与会话与从数据存储中提取数据之间进行权衡,当然在数据存储和应用之间缓存数据的适当机会)如果你沿着这条路走下去,你可以使用任何一个会话,或者,如果你愿意,可以使用一个cookie,这反过来又让你免于依赖会话。

正如我所说,简单,实用的答案是在Session中 - 但你需要知道这给你带来的开销和其他限制。

答案 1 :(得分:3)

Cookies-绝对不是。 会话 - 可能,取决于服务器上的用户数/负载数。 缓存 - 可能不是一个好主意,除非许多用户查看相同的网格(即数据保证被缓存)。

你不能向其他页面提供一些信息,允许该页面获取gridview本身的数据 - 也许就像querystring参数一样简单,例如。的productId = 10?

另请阅读ASP.NET中的cross page posting

答案 2 :(得分:2)

如果您执行重定向到其他页面,Session是一个好地方。但是如果DataTable的重建成本不是太高,我可能会向数据库发送一个新的查询。

答案 3 :(得分:2)

Cross page posting是你可以通过公开一个包含DataTable的属性来做的事情。另一个选择是在下一页上再次填充数据表,如果再次执行它并不太昂贵。我认为缓存和会话将是昂贵的。 Cookies肯定不是一个选项,因为它会将所有的东西暴露给客户。

答案 4 :(得分:1)

这取决于数据表的内容。

我会排除Cookies,因为它会强制您将所有数据传输到客户端并返回(猜测如果它是DataTable,它可以有很多记录)。

会话和缓存都可以工作,但考虑到只要用户保持会话活动状态,它们就会存储在内存中。

如果查询没有花费很长时间来执行,我会考虑再次运行它。

答案 5 :(得分:1)

您可以在ViewState中对其进行序列化。

答案 6 :(得分:-7)

会议将是最好的选择。