自訂伺服器控制項之:日曆 DateBox 控制項

來源:互聯網
上載者:User
之前一直在使用梅花雨日曆控制項作為日曆輸入,但是在.Net 使用時發現幾個問題:
1:每次在日曆框後面都要寫一個映像等代碼;
2:如果使用者沒有輸入資料在伺服器取值時還要先判斷;

為瞭解決以上兩個問題所以寫了如下的控制項:
該控制項使用簡單只有直接拖拽到頁面即可,取賦值時全部使用Value屬性。
請注意:為了方便替換日曆控制項,控制項JS並沒有包含在Dll中,所以頁面必須包含  日曆控制項 的 JS

MicroSystem.WebControls.Datebox 日期文字框(IE5+):
內建了日曆選擇功能(日曆使用了梅花雨日曆控制項)
<msi:DateBox ID="OpenDate" runat="server" CssClass="SetDate"  MustInput="true"></msi:DateBox>
MicroSystem.WebControls.zip 包含全部源碼,文檔、執行個體

DataBox.vb
Imports System.ComponentModel
Imports System.Web.UI
Imports ASP = System.Web.UI.WebControls
Imports MicroSystem.WebControls

''' <summary>
''' 日期文字框
''' </summary>
''' <remarks>
''' <example>
''' <code>
''' &lt;msi:DateBox ID="OpenDate" runat="server" CssClass="SetDate" &gt;&lt;/msi:DateBox&gt;
''' </code>
''' </example>
''' 2007-7-3 <br />
''' 需要改進:當文字框為 Enabled = false 或者 readonly = true 時 隱藏日曆Img <br />
''' 當postback 時不能再顯示Img,暫未實現上述功能;可以考慮在用戶端用 HTC 實現
''' </remarks>
<DefaultProperty("Value")> _
<ToolboxData("<{0}:DateBox runat=server CssClass=SetDate></{0}:DateBox>")> _
Public Class DateBoxClass DateBox
    Inherits BaseBox

    ''' <summary>
    ''' 擷取或設定日期
    ''' </summary>
    ''' <returns>如空返回 Nothing</returns>
    <Browsable(True)> _
    <Bindable(False)> _
    <Category("Appearance")> _
    <DefaultValue("")> _
    <Localizable(True)> _
    <Description("返回日期,如空返回 Nothing ")> _
    Property Value()Property Value() As Date
        Get
            If Me.Text = "" Then
                Return Nothing
            Else
                Return CDate(Me.Text)
            End If
            'Return IIf(Me.Text = "", Nothing, CDate(Me.Text))
        End Get
        Set(ByVal value As Date)
            If value.Year > 1 Then
                Me.Text = Format(value, "yyyy-MM-dd")
            End If
        End Set
    End Property

    ''' <summary>
    ''' 擷取控制項的行為模式(單行)
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks>唯讀</remarks>
    <Browsable(False)> _
    <Bindable(False)> _
    Public Shadows ReadOnly Property TextMode()Property TextMode() As ASP.TextBoxMode
        Get
            Return ASP.TextBoxMode.SingleLine
        End Get
    End Property

    Protected Overrides Sub Render()Sub Render(ByVal writer As HtmlTextWriter)
        MyBase.AddAttributesToRender(writer)
        writer.RenderBeginTag(HtmlTextWriterTag.Input)
        writer.RenderEndTag()
        'If Me.Enabled And Me.ReadOnly Then '
        'writer.Write("<img src='images/date.gif' alt=""點擊選擇日期"" onclick=""setday(this,document.getElementById('" + Me.ClientID + "'))"" />")
        writer.AddAttribute(HtmlTextWriterAttribute.Src, Page.ClientScript.GetWebResourceUrl(Me.GetType(), "MicroSystem.WebControls.date.gif"))
        writer.AddAttribute(HtmlTextWriterAttribute.Alt, "點擊選擇日期")
        writer.AddAttribute(HtmlTextWriterAttribute.Onclick, "setday(this,document.getElementById('" + Me.ClientID + "'))")
        writer.AddAttribute(HtmlTextWriterAttribute.Class, "link")
        writer.RenderBeginTag(HtmlTextWriterTag.Img)
        writer.RenderEndTag()
        'End If

        If Me.MustInput Then
            'MyBase.RFVMustInput = New ASP.RequiredFieldValidator
            MyBase.RFVMustInput.RenderControl(writer)
        End If
        ' MyBase.Render(writer)
    End Sub

End Class

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.