2011-08-27 81 views
1

假设我有一个数据网格绑定到数据源的页面。如果我有两个不同的客户访问这个页面,每个人的数据源是不同的,还是他们使用相同的数据源?是否为连接到服务器的每个客户端创建SqlDataSource?

  • 如果它们相同,如果客户端应用过滤器会发生什么?其他客户也看到了这个过滤器?如何避免这种情况?

  • 如果它们不一样,并且我有大量记录,并且数据源模式是DataSet,那么这会在服务器上存储2个相同数据的副本吗?我如何解决这些问题?

回答

1

SqlDataSource控件是一个实例类,所以它将在每个请求上重新创建。您可能想要查看连接池,因此您可以重新使用数据库连接。

我不认为这是可能的,使控制静态,我不认为你需要控制静态。如果您想为访问该页面的所有用户重用数据集,我会考虑缓存DataSet或将其存储在应用程序状态中。我相信你可以通过使用OnSelecting和OnSelected事件的混合来实现SqlDataSource。

  • 缓存数据集在OnSelected事件
  • 在OnSelecting事件,请检查您是否有缓存的数据集,并取消了,如果你做的选择。
+0

你能提供一个伪代码吗? – atoMerz

0

他们是独立的,除非你所做的数据集静态的,那么它会在页面的所有实例共享。我不确定你想要解决什么问题?数据集背后没有数据库吗?或者你担心内存消耗?

+0

是的,内存是问题。而且我该如何在asp中声明它是静态的(而不是代码后面)。 – atoMerz