簡體   English   中英

具有持久性的CheckBox列添加到GridView

[英]Add a CheckBox column to a GridView with persistence

我有一個ASP.NET應用程序,可將各種視圖顯示到較大的蛋白質序列數據庫中。 當訪問者瀏覽數據時,我希望他們能夠在GridView行中選擇一個CheckBox來標記序列,以便以后將其下載為壓縮文本文件。 我不想存儲選擇,因此它們僅對會話有效。

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

因此,我實際上對此有兩個問題:

1)我做得太多嗎? 有沒有更簡單的方法來實現這一目標?

2)會話狀態的所有往返服務器是否都可能是性能問題? 我可以在頁面上放置一個“保存以供下載”按鈕,以對它進行批處理以提供幫助。 處理檢查事件似乎更具容錯性,因為如果您離開就不會意外丟失狀態。

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

如果很重要,我將使用C#、. NET 3.5,VS2008,並使用從SQLServerExpress表創建GridView的簡單拖放方式。

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

我認為您無法通過GridView中的復選框進行排序,因為您需要指定排序列。 您可以通過創建一個合成數據源來做到這一點,該合成數據源基本上將保存的會話信息與表中的數據結合在一起,但是不能使用直接連接到該表的SQLDataSource。

我不確定是否有更簡便的方法,但是對於您的其他問題:

2.)您需要自己確定魯棒性和網絡流量之間的平衡。 如果使用check事件,那么您將相當多地返回到服務器。 如果您使用其他事件(將注意力集中在網格上,單擊明確的“更新/保存”按鈕,或導航到另一個頁面),則會減少流量,但可能會丟失信息。 這是UI設計決策,沒有“正確”的答案。

3.)可能,盡管可能不是自動的。 我知道DataGridViews將生成處理程序以自動按復選框列進行排序。 我不確定使用常規的GridView是否就這么簡單。 您使用GV而不是DGV是否有原因?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM