elv*_*vin 3 asp.net ajaxcontroltoolkit
基本上,我只想让选择日期大于今天.我更喜欢这种方式来避免显示警报消息.
我不认为当前版本的Toolkit支持限制可选日期.这是一个处理ClientDateSelectedChanged-Event并验证所选日期的简单解决方法:
如何确保用户不会选择比今天更早或更早的日期
可能存在您不希望用户选择比当前日期早一天的情况.例如:当您向用户提供表单以预订票证时,您不希望他选择较早的日期.要达到此要求,请使用以下JavaScript代码.
阻止用户选择比今天更早的日期
<head runat="server">
<title>Calendar Extender</title>
<script type="text/javascript">
function checkDate(sender,args)
{
if (sender._selectedDate < new Date())
{
alert("You cannot select a day earlier than today!");
sender._selectedDate = new Date();
// set the date back to the current date
sender._textbox.set_Value(sender._selectedDate.format(sender._format))
}
}
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
调用代码:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:CalendarExtender ID="CalendarExtender1"
runat="server" OnClientDateSelectionChanged="checkDate" TargetControlID="TextBox1" />
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
选择日期大于今天
在javascript中,只需更改此行
sender._selectedDate > new Date()
注意:您可能会争辩说,用户仍然可以通过在文本框中输入或输入无效日期来更改日期.那么可以使用ValidationControl轻松处理,并在下一篇技巧中介绍.
添加验证到CalendarExtender控件
向Calendar添加验证的一种简单方法是将ValidationControl添加到与CalendarExtender关联的文本框中.你有两个选择:
Extender到ValidationControl.要执行此操作,请拖放ValidationControl>单击ValidationControl>选择的智能标记Add Extender.从Extender向导中,选择ValidatorCalloutExtender.使用此方法可以非常轻松地将控件扩展器发现并附加到控件上.在VS 2005中,您必须通过连接控制扩展器手动执行此过程.ValidationControls的TextBox.第一个,a CompareValidator用于检查用户是否未输入无效日期(例如:5月32日),第二个RangeValidator用于检查日期范围是否符合要求.添加CompareValidator
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToValidate="TextBox1" Display="Dynamic" ErrorMessage="Invalid Date"
Operator="DataTypeCheck" Type="Date">
</asp:CompareValidator>
<cc1:ValidatorCalloutExtender ID="CompareValidator1_ValidatorCalloutExtender"
runat="server" Enabled="True" TargetControlID="CompareValidator1">
</cc1:ValidatorCalloutExtender>
Adding RangeValidator – We will restrict the user to select a date range starting from today to 15 days from now.
<asp:RangeValidator ID="RangeValidator1" runat="server"
ControlToValidate="TextBox1" ErrorMessage="RangeValidator"
Type="Date">
</asp:RangeValidator>
<cc1:ValidatorCalloutExtender ID="RangeValidator1_ValidatorCalloutExtender"
runat="server" Enabled="True" TargetControlID="RangeValidator1">
</cc1:ValidatorCalloutExtender>
Run Code Online (Sandbox Code Playgroud)
在页面后面的代码中,添加此代码C#
protected void Page_Load(object sender, EventArgs e)
{
RangeValidator1.MinimumValue = System.DateTime.Now.ToShortDateString();
RangeValidator1.MaximumValue = System.DateTime.Now.AddDays(15).ToShortDateString();
}
Run Code Online (Sandbox Code Playgroud)
VB.NET
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
RangeValidator1.MinimumValue = System.DateTime.Now.ToShortDateString()
RangeValidator1.MaximumValue = System.DateTime.Now.AddDays(15).ToShortDateString()
End Sub
Run Code Online (Sandbox Code Playgroud)
那些是与之相关的一些提示CalendarExtender.随着工具包的未来版本的发布,我们应该希望有更简单的方法来实现这一功能.
来自:http://www.dotnetcurry.com/ShowArticle.aspx?ID = 149
另一种高级方法是扩展CalendarExtender javascript,但是你有自己的自定义版本的ajax工具包.
http://codegoeshere.blogspot.com/2007/06/extending-calendarextender.html
| 归档时间: |
|
| 查看次数: |
28186 次 |
| 最近记录: |