之前一直在使用梅花雨日历控件作为日历输入,但是在.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 包含全部源码,文档、实例
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
DataBox.vb
Imports System.ComponentModel
Imports System.Web.UI
Imports ASP = System.Web.UI.WebControls
Imports MicroSystem.WebControls
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
''' <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>")> _
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
Public Class DateBoxClass DateBox
Inherits BaseBox
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
''' <summary>
''' 获取或设置日期
''' </summary>
''' <returns>如空返回 Nothing</returns>
<Browsable(True)> _
<Bindable(False)> _
<Category("Appearance")> _
<DefaultValue("")> _
<Localizable(True)> _
<Description("返回日期,如空返回 Nothing ")> _
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
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
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
''' <summary>
''' 获取控件的行为模式(单行)
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks>只读</remarks>
<Browsable(False)> _
<Bindable(False)> _
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Public Shadows ReadOnly Property TextMode()Property TextMode() As ASP.TextBoxMode
Get
Return ASP.TextBoxMode.SingleLine
End Get
End Property
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
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
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
If Me.MustInput Then
'MyBase.RFVMustInput = New ASP.RequiredFieldValidator
MyBase.RFVMustInput.RenderControl(writer)
End If
' MyBase.Render(writer)
End Sub
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
End Class