之前一直在使用梅花雨日曆控制項作為日曆輸入,但是在.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>
''' <msi:DateBox ID="OpenDate" runat="server" CssClass="SetDate" ></msi:DateBox>
''' </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