[ASP.NET 自訂控制項]CheckBox新增SelectedValue屬性,將checked轉成值的型態

  • 11134
  • 0
  • 2009-09-04

[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


或許您會對下列培訓課程感興趣:

  1. 2021/1/9:【針對遺留代碼加入單元測試的藝術】202101 - 台北
  2. 2021/1/10:【極速開發+】 202101 台北
  3. 2021/2/20~2021/2/21:【演化式設計】測試驅動開發與持續重構 202102

想收到第一手公開培訓課程資訊,或想詢問企業內訓、顧問、教練、諮詢服務的,請洽 Facebook 粉絲專頁:91敏捷開發之路