[ASP.NET 自訂控制項]CheckBox新增SelectedValue屬性,將checked轉成值的型態
其實這功能一點都不值得拿出來說嘴,
寫的又死,又不是多難的東西,即使沒有包過這一層,自己用CODE轉換也不會比較難。
沒錯,的確是如此。
這邊只是提供大家一個笨方法,直接在自訂控制項做掉這一塊,省得只要使用就得自行轉值。
一樣,請有更好作法的大大指教一二!在這邊感激不盡!
這邊舉的例子是,當我的資料來源的值,是「Y」、「是」、「1」、「True」時,我要自動勾選checkbox。
反之,當我打勾checkbox時,我希望存的值是「Y」。(不符合各位看官需求時,相信看CODE就會改)。
設計成SelectedValue是為了讓Checkbox長的比較像CheckBoxList一點。
Public Overridable Property SelectedValue() As String
Get
If Me.ViewState.Item("SelectedValue") Is Nothing Then
Return String.Empty
Else
Return CType(Me.ViewState.Item("SelectedValue"), String)
End If
End Get
Set(ByVal value As String)
Select Case value.ToUpper
Case "Y", "是", "1", "TRUE"
Me.ViewState.Item("Checked") = True
value = "Y"
Case "N", "否", "0", "FALSE"
Me.ViewState.Item("Checked") = False
value = "N"
End Select
Me.ViewState.Item("SelectedValue") = value
End Set
End Property
<Browsable(True)> _
Public Overrides Property Checked() As Boolean
Get
If Me.ViewState.Item("Checked") Is Nothing Then
Return False
Else
Return CType(Me.ViewState.Item("Checked"), Boolean)
End If
End Get
Set(ByVal value As Boolean)
Me.ViewState.Item("Checked") = value
If value = True Then
Me.ViewState.Item("SelectedValue") = "Y"
Else
Me.ViewState.Item("SelectedValue") = "N"
End If
End Set
End Property
就這樣,兩個屬性搞定,只是在SelectedValue與Checked之間做個連動。
如果要額外加工,可以考慮將屬於True的部分利用列舉型別來做轉值配對的功能。
就不會像小弟這邊一槍打死所有可能是True的情況。
[註]2009/09/04,附上C#的Source Code與Sample 網站:Checkbox.rar
blog 與課程更新內容,請前往新站位置:http://tdd.best/