2011-08-27 78 views
1

假設我有一個數據網格綁定到數據源的頁面。如果我有兩個不同的客戶訪問這個頁面,每個人的數據源是不同的,還是他們使用相同的數據源?是否爲連接到服務器的每個客戶端創建SqlDataSource?

  • 如果它們相同,如果客戶端應用過濾器會發生什麼?其他客戶也看到了這個過濾器?如何避免這種情況?

  • 如果它們不一樣,並且我有大量記錄,並且數據源模式是DataSet,那麼這會在服務器上存儲2個相同數據的副本嗎?我如何解決這些問題?

回答

1

SqlDataSource控件是一個實例類,所以它將在每個請求上重新創建。您可能想要查看連接池,因此您可以重新使用數據庫連接。

我不認爲這是可能的,使控制靜態,我不認爲你需要控制靜態。如果您想爲訪問該頁面的所有用戶重用數據集,我會考慮緩存DataSet或將其存儲在應用程序狀態中。我相信你可以通過使用OnSelecting和OnSelected事件的混合來實現SqlDataSource。

  • 緩存數據集在OnSelected事件
  • 在OnSelecting事件,請檢查您是否有緩存的數據集,並取消了,如果你做的選擇。
+0

你能提供一個僞代碼嗎? – atoMerz

0

他們是獨立的,除非你所做的數據集靜態的,那麼它會在頁面的所有實例共享。我不確定你想要解決什麼問題?數據集背後沒有數據庫嗎?或者你擔心內存消耗?

+0

是的,內存是問題。而且我該如何在asp中聲明它是靜態的(而不是代碼後面)。 – atoMerz