您的位置:首页 > 其它

自定义服务器控件之:日历 DateBox 控件

2007-08-09 20:27 344 查看
之前一直在使用梅花雨日历控件作为日历输入,但是在.Net 使用时发现几个问题:

1:每次在日历框后面都要写一个图像等代码;

2:如果用户没有输入数据在服务器取值时还要先判断;

为了解决以上两个问题所以写了如下的控件:

该控件使用简单只有直接拖拽到页面即可,取赋值时全部使用Value属性。

请注意:为了方便替换日历控件,控件JS并没有包含在Dll中,所以页面必须包含 日历控件 的 JS

MicroSystem.WebControls.Datebox 日期文本框(IE5+):

自带了日历选择功能(日历使用了梅花雨日历控件)

<msi:DateBox ID="OpenDate" runat="server" CssClass="SetDate" MustInput="true"></msi:DateBox>

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: