1. 前言
開發項目中經常會遇到要求使用者挑選清單中資料的問題,例如選擇允許參加某個活動 的使用者、選擇允許參加某個項目的省市或地區,在資料量較小的情況下,我們可以把所有資料使用任何一 種資料繫結控制項顯示出來並在每一個資料項目前面顯示複選框,但在資料量比較大時同時顯示全部資料顯然 不太合適,我們首先考慮到的是使用分頁。但是在使用分頁後問題也隨之而來,如何在切換分頁時同時保 持已選中項目,有些開發人員可能使用伺服器端代碼編寫儲存在Session中,這種方式最大的弊端在於每 次都向伺服器端提交,並且由於這些選中的資料只需要在當前頁面使用,所以還白白的佔用了Session。
對於這類問題,我們現在有了更好的選擇,使用ASP.NET AJAX和JQuery結合在一起實現翻頁選擇 。
2. 相關理論
使用ASP.NET AJAX中的ScriptManager和UpdatePanel控制項我們可以輕鬆的 實現GridView的分頁,現在所需要考慮的就是在分頁結束後根據使用者的選擇使相應的複選框處於選中狀態 。實際上在AJAX.NET中,微軟為我們提供了完全的AJAX請求生命週期控制,以下事件會在用戶端觸發:
Application.init——當某一個頁面第一次請求時觸發。在非同步回傳中不會觸發該事 件
PageRequestmanager.initializeRequest——在一個非同步請求開始之前觸發,相當 於預始化階段
PageReqeustManager.beginRequest——在一個非同步請求開始之前觸發
PageRequestManager.pageLoading——在用戶端收到服務端的非同步請求響應並且更新 UpdatePanel之前觸發該事件
PageRequestManager.pageLoaded——在用戶端收到服務 端的非同步請求響應並且更新UpdatePanel中的內容更新後觸發該事件,頁面初始化載入時也會觸發該事件 。
Application.load——在普通和非同步回傳期間觸發該事件
PageRequestManager.endRequest——在完成一次非同步請求後不管有沒有異常發生均會 觸發該事件
Application.unload——當使用者離開或重新載入該頁面時觸發該事件
通過以上分析,我們只需要在分頁非同步請求完成後根據選中的狀態更新相應的複選框即可。在取 得複選框時可以使用JQuery中強大的選取器,例如以下代碼選中了某個GridView中的全部複選框。
$('div[#<%=gdvCustom.ClientID %>] input[type=checkbox]')
根據以上分析,以下範例程式碼展示了最終的運用結果。