2008-10-09 57 views
2

我有一個ASP.NET應用程序,它將各種視圖顯示爲一個大型蛋白質序列數據庫。當訪問者瀏覽數據時,我希望他們能夠選擇GridView行中的複選框來標記序列,以便以後下載爲壓縮文本文件。我不想存儲選擇,因此它們應該只對會話有效。將一個CheckBox列添加到具有持久性的GridView中

我現在的想法是將一個TemplateField添加到GridView,然後添加一個CheckBox。我打算處理檢查事件並將序列ID存儲在會話狀態中。當用戶前往下載頁面時,我將獲得會話數據,顯示他們即將下載的序列列表,然後一起發送文件。很明顯,我還必須在每個表單加載/頁面切換時重新分析會話數據。

所以我其實有一個關於這幾個問題:

1)我做的工作太多了?有沒有更簡單的方法來實現這一點?

2)會話狀態的所有往返服務器是否可能是性能問題?我可以在頁面上放置一個「Save for Download」按鈕來對其進行批量處理以幫助解決問題。處理檢查事件似乎更具有容錯性,因爲如果您離開,您不會意外失去狀態。

3)是否可以通過選中的框列對GridView進行排序?我想先通過選中的框列進行排序,然後按當前排序的列進行排序(例如,如果GridView按姓氏排序,按檢查列排序,然後按姓氏排序)。

萬一它很重要,我使用的是C#,.NET 3.5,VS2008,我使用從SQLServerExpress表創建GridView的簡單拖放方式。

回答

0

我不知道有一個更簡單的方法來做到這一點,但你的其他問題:

2)你需要決定自己的魯棒性和網絡流量之間的平衡。如果您使用檢查事件,您將返回服務器相當多。如果您使用不同的事件(在網格上失去焦點,點擊一個明確的「更新/保存」按鈕或導航到另一頁),您可能會損失信息,從而減少流量。這是一個沒有「正確」答案的UI設計決策。

3.)這是可能的,但它可能不是自動的。我知道DataGridViews會自動生成處理程序來按複選框列排序。我不確定使用常規的GridView會如此簡單。您有使用GV而不是DGV的原因嗎?

+0

DataGridView只是Windows窗體。 System.Web.UI.WebControls只有DataGrid和GridView。 – 2008-10-09 17:23:10

1

通過頁面方法使用AJAX跟蹤會話狀態中的複選框狀態。這將使往返成本最小化。

我不認爲您可以通過GridView中的複選框進行排序,因爲您需要指定排序列。您可以通過創建一個基本上將您保存的會話信息與來自表的數據連接起來的合成數據源來完成此操作,但不能使用直接連接到該表的SQLDataSource。