沒有什么,開發ASP.NET時隨便寫寫,想到什么寫什么,這次想寫點開發過程中,比如在數據庫,某一張表中有一個字段,如下:
上面代碼示例中高亮字段,數據類型為BIT,它存儲的值將為"True"或"False"。
在前端aspx網頁上,我們用一個形式來呈現友好的控件。一般來說,存儲boolean值,一般使用CheckBox控件,選中得到為True,反之得到為False,這個是較理想的。但是現這里是要呈現性別,男或女。那就不能使用CheckBox控件了。最接近此要求,也許是RadioButtonList控件了。
我們在程序中,設定幾個數據集,作為RadioButtonList 的數據源:
上面的Key使用int數據類型。
上面的key使用string數據類型。其實還可以定義其它,這不是重要,但要理解其含義,為什么這樣要這樣定義,目的是什么。
下面我們實現aspx的功能,也許有些網友會直接如下寫法:
這樣死寫法根本無需准備什么數據源。Insus.NET在想,這樣做也沒有什么問題。因為它這樣確實可以的。看開發者開發時的想法與思維了。不過按照Insus.NET的習慣,數據呈現與程序封裝,還是在cs程序中對RadioButtonList進行數據源綁定。如果后台綁定數據源,在aspx網頁只會拉一個RadioButtonList控件即可。
看.aspx.cs的
上面代碼是完全沒有問題,或許你就是這樣寫的。但是Insus.NET並不會這樣做,不想把任何在需要在Page_Load()事件運行的代碼放在Page_Load()方法內。理想的實現,是另寫一個私有方法:
在網頁瀏覽時,看到的效果:
OK,上面只是一些曾通的RadioButtonList的數據源綁定。假如在數據源綁定時,還要根據數據,男或女把RadioButtonList的選擇選中狀態。
但是,偏偏在你寫程序時,你會遇上是根據值去設置,它是以0或是1來判斷,那我們怎樣來實現了呢? 這樣情況之下,需要修改一下程序:
寫到這里,我們會想起,真正開發時,我們是不知什么情況之下是傳入Text,什么情況之下傳入的是Value。嗯,我們就應該考慮到這些情形。下面Insus.NET的解決方法:
寫兩個私有方法,並重載。是Byvalue和ByText的。這樣在引用它們時,只是傳入是值或是文本即可。此時能把這個功能實現這樣,也許覺得很完美。但是某一情況之下,如你是使用DropDownList去呈現一些數據。上面的方法似乎有相似之處,但是完全不能拿來使用。只完另外再寫兩個方法:
對吧。我們會不禁住地問,是否有一個萬全之策? 解決這個問題,我們應該想到,不管是RadioButtonList還是DropDownList控件,均是繼承ListControl類,如果想到這點,我們就可以把這四個私有方法,寫成兩個通用的:
呵呵,此時不管你是傳入DropDownList還是RadioButtonList均沒有問題,是吧。
平時,Insus.NET開發時,連參數也不想傳入過多。是否可以做到? 如:
void SetSelectedByDataValueField(string byValue)
上面一系列的動作,是解決RadioButtonList設置Selected的狀態。
在面向對象以及三層開發過程中,Insus.NET基本上沒有在程序中寫SQL語句來存與取同數據庫進行溝通。我們會在程序編寫一個類,如:
上面的類別,只寫一個property。因此這篇博文中,重點是說它。
用戶在前台數據呈現中,作出選擇,需要把選擇的結果存回至數據表中,看一下語法
由於我們寫property時,定義的數據類型為布爾(bool)。上面寫的
objMember.Sex = this.RadioButtonListSex.SelectedItem.Value;
一個是得到string,一個需要bool。因此需要處理一下數據類型,才能糾正錯誤:
上面代碼示例中,是把選擇的值轉換為布爾值。
由於開發一開始時,就為RadioButtonList控件設置了兩個值,0與1。因此我們可以對上面的代碼稍改一下:
拿掉高亮的代碼,由於我們在Switch之前,已經定義好一個私有變量:
bool sex = true;
這樣不管用戶選擇了男還是女,程序在跑Switch時,只有case是0時,才會去轉換類型,對吧。既然是這樣,我們又可以把這數據類型轉換的寫成:
呵呵,隨便寫寫,望網友能看得懂。