之前一直在使用梅花雨日历控件作为日历输入,但是在.Net 使用时发现几个问题:
1:每次在日历框后面都要写一个图像等代码;
2:如果用户没有输入数据在服务器取值时还要先判断;
为了解决以上两个问题所以写了如下的控件:
该控件使用简单只有直接拖拽到页面即可,取赋值时全部使用Value属性。
请注意:为了方便替换日历控件,控件JS并没有包含在Dll中,所以页面必须包含 日历控件 的 JS
之前一直在使用梅花雨日历控件作为日历输入,但是在.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