【发布时间】:2011-04-09 21:32:19
【问题描述】:
基本上,我只想允许选择大于今天的日期。我更喜欢这种方式来避免显示警报消息。
【问题讨论】:
-
我认为不可能避免使用 javascript 警报方法。
-
是的,这就是我所害怕的。谢谢!
标签: asp.net ajaxcontroltoolkit
基本上,我只想允许选择大于今天的日期。我更喜欢这种方式来避免显示警报消息。
【问题讨论】:
标签: asp.net ajaxcontroltoolkit
在页面加载中将日历扩展器的 StartDate 属性设置为 DateTime.Now.Date 这会将以前的日期显示为不可选择
【讨论】:
我认为当前版本的工具包不支持限制可选日期。这是处理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>
调用代码:
<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>
选择大于今天的日期
在javascript中,只需更改此行
sender._selectedDate > new Date()
注意:您可能会争辩说,用户仍然可以通过在文本框中键入或输入无效日期来更改日期。这可以使用 ValidationControl 轻松处理,并在下一个技巧中介绍。
向 CalendarExtender 控件添加验证
向日历添加验证的一种简单方法是向与 CalendarExtender 关联的文本框添加 ValidationControl。你有两个选择:
Extender 添加到ValidationControl。为此,拖放ValidationControl > 单击ValidationControl 的智能标签 > 选择Add Extender。从扩展程序向导中,选择ValidatorCalloutExtender。使用这种方法可以非常容易地发现控件扩展器并将其附加到控件。在 VS 2005 中,您必须手动执行此过程,即连接控制扩展器。TextBox 中添加两个 ValidationControls。第一个是CompareValidator,用于检查用户是否输入了无效日期(例如:5 月 32 日),第二个是RangeValidator,用于保持所需的日期范围。添加比较验证器
<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>
在页面后面的代码中,添加此代码 C#
protected void Page_Load(object sender, EventArgs e)
{
RangeValidator1.MinimumValue = System.DateTime.Now.ToShortDateString();
RangeValidator1.MaximumValue = System.DateTime.Now.AddDays(15).ToShortDateString();
}
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
这些是与CalendarExtender 相关的一些提示。随着工具包未来版本的发布,我们应该希望有更简单的方法来实现此功能。
发件人:http://www.dotnetcurry.com/ShowArticle.aspx?ID=149
另一种高级方法是扩展 CalendarExtender javascript,但是您拥有自己的自定义版本的 ajax 工具包。
http://codegoeshere.blogspot.com/2007/06/extending-calendarextender.html
【讨论】: