WEB控件沒有什么所謂好不好,而是用得好不好


這幾天Insus.NET有寫幾篇博文,雖然寫得沒怎么樣,但均是Insus.NET現實開發過程中所遇或是所想的一些內容。
沒有什么,開發ASP.NET時隨便寫寫,想到什么寫什么http://www.cnblogs.com/insus/p/3810032.html
跟用戶溝通,問題盡量分析清楚,以及解決問題http://www.cnblogs.com/insus/p/3813185.html
ASP.NET開發,且編且改,分清職責http://www.cnblogs.com/insus/p/3817682.html


昨天又在論壇上看到一網友對Web控件的實現需求:
"就是頁面上有一個checkboxlist控件,一個查詢按鈕,首次加載時checkboxlist是全選狀態的,點擊查詢以后選擇的值就被清空了,我現在是想保持選擇的值的狀態。"

Insus.NET再以此為例,寫一寫ASP.NET的開發過程,怎樣一步一步實現,代碼是怎樣盡量寫得通俗易懂明了。再加上Web控件沒有什么所謂好不好,而是用得好不好

很早之前,Insus.NET就有寫過一篇《Asp.net >> CheckBoxList控件http://www.cnblogs.com/insus/archive/2011/06/17/2081639.html 很多地方還是值得參考的地方。

解決此問題,還是一步一步來,急之不了。

在xxx.aspx網頁上,拉兩個控件,一個為CheckBoxList,另一個為Button按鈕。

 

既然有用到CheckBoxList控件,那我們需要為之准備數據源,其實你可以在.aspx網頁直接接,不過Insus.NET還是習慣在aspx.cs后程序中寫。當然這些數據源還是可以從數據庫中某一個表獲取。


准備這些數據,Insus.NET還是建議准備有key和value的數據。真實環境中,應用到這些數據,均是被另一個表作為外鍵引用。
准備好數據,接下來當然是為CheckBoxList控件綁定了。



寫一個私有方法Data_Binding()。然后引用至Page_Load事件內。有一點注意,需要用IsPostBack是否回發判斷來綁定。

現在是重點解決問題,CheckBoxList控件中,哪些選擇是被選擇的?不管是在網頁一加載,還某一事件處理,我們需要用一個集來存儲。上面提供的鏈接中,也有相似的方法,不過此次Insus.NET用另外一種方法,讓你多一種參考:

 

OK,現在我們可以在按鈕的事件中,去把CheckBoxList控件所選擇的值存儲起來:



其實這樣,程序並不會在網頁加載時,把銨鈕點擊之前的CheckBoxList所選擇的值重新綁定在控件之上。因此我們需要稍微修改一下Data_Binding()方法:



上面高亮塊代碼。
想把代碼寫好些,有時你可以讓if關鍵詞不出現在程序上。改之:


OK,寫得差不多了,重新檢查重個功能的代碼,還一點還是讓Insus.NET不舒服的,就是Session,因為Session的名字,在代碼中,有三處地方出現。寫程序時,我們需要來回檢查或是復制Session名字。以后可以作為一個習慣,把Session寫成一個屬性:


這樣子,在程序中有引用這個Session的地方,就可以改用為屬性了,做到了封裝:

 

實時演示:

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2024 CODEPRJ.COM