Asp.net Ajax日历扩展程序结束日期
我正在使用ajax calendar extender处理“开始日期”和“结束日期”文本框,我必须禁用“结束日期”前一个日期或小于所选“开始日期”的日期。我可以看到许多使用范围验证的帖子。如何在不向用户发送任何消息的情况下禁用日期?您可以使用asp:CustomValidator。在OnServerValidate=ServerValidate方法中,您可以在代码隐藏文件中编写此类代码:Asp.net Ajax日历扩展程序结束日期,asp.net,ajax,asp.net-ajax,calendar,Asp.net,Ajax,Asp.net Ajax,Calendar,我正在使用ajax calendar extender处理“开始日期”和“结束日期”文本框,我必须禁用“结束日期”前一个日期或小于所选“开始日期”的日期。我可以看到许多使用范围验证的帖子。如何在不向用户发送任何消息的情况下禁用日期?您可以使用asp:CustomValidator。在OnServerValidate=ServerValidate方法中,您可以在代码隐藏文件中编写此类代码: protected void ServerValidate(object source, ServerVal
protected void ServerValidate(object source, ServerValidateEventArgs value)
{
DateTime dtStart = DateTime.ParseExact(txtStartDate.Text.Trim(), "yyyyMMdd", culture.DateTimeFormat);
DateTime dtEnd = DateTime.ParseExact(txtEndDate.Text.Trim(), "yyyyMMdd", culture.DateTimeFormat);
if (dtStart > dtEnd)
{
value.IsValid = false;
txtEndDate.Text = string.Empty
}
}
您可以使用带有隐藏触发器按钮的更新面板来设置第二个文本框的日历扩展程序的EndDate属性:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtStart" runat="server"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server" TargetControlID="txtStart" OnClientDateSelectionChanged="dateSelectionChanged">
</ajaxToolkit:CalendarExtender>
<br /><br />
<asp:TextBox ID="txtEnd" runat="server"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="CalendarExtender2" runat="server" TargetControlID="txtEnd">
</ajaxToolkit:CalendarExtender>
<script type="text/javascript">
function dateSelectionChanged(sender, args) {
__doPostBack('<%=btnReload.ClientID %>', null);
}
</script>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="btnReload" runat="server" style="display:none;" />
首先添加.dll-RJS.Web.WebControl.PopCalendar.Net.2008.dll
然后添加源代码:
<asp:TextBox ID="DepartureDate" runat="server"></asp:TextBox>
<rjs:PopCalendar ID="PopCalendar1" runat="server" Control="DepartureDate"
Format="mm dd yyyy"
InvalidDateMessage="The date value entered is invalid." RequiredDate="True"
RequiredDateMessage="You must enter a date value." From-Date="" SelectWeekend="True"
/>
<br />
<br />
<br />
<asp:TextBox ID="ReturnDate" runat="server"></asp:TextBox>
<rjs:PopCalendar ID="myReturnCal" runat="server" Control="ReturnDate"
Format="mm dd yyyy"
InvalidDateMessage="The date value entered is invalid." RequiredDate="True"
RequiredDateMessage="You must enter a date value."
From-Control="DepartureDate" From-Date="" From-Increment="1"
/>
<br />
<asp:Label ID="Results" runat="server"></asp:Label>
<rjs:PopCalendarMessageContainer ID="PopCalMessagesForDeparture" runat="server"
Calendar="myDepartureCal" />
<rjs:PopCalendarMessageContainer ID="PopCalMessagesForReturn" runat="server"
Calendar="myReturnCal" />
试试这个:
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"> </script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
$().ready(function () {
$('.dDate, .rDate').datepicker({
showOn: 'both',
buttonImage: "<?=$http?>layout_images/calendar.gif",
buttonImageOnly: true,
beforeShow: customRange,
buttonText: 'Open Calendar',
firstDay: 1,
dateFormat: 'D d M yy',
onSelect: function (date) {
date = $(this).datepicker('getDate');
$('#returningdate').val($.datepicker.formatDate('D d M yy', date));
}
});
});
function customRange(a) {
var b = new Date();
var c = new Date(b.getFullYear(), b.getMonth(), b.getDate());
if (a.id == 'returningdate') {
if ($('.dDate').datepicker('getDate') != null) {
c = $('.dDate').datepicker('getDate');
}
}
return {
minDate: c
}
}
</script>
</head>
<body >
<div style="font-size:11px;">
Depart Date: <input type="text" id="departingdate" class="dDate"><br>
Return Date: <input type="text" id="returningdate" class="rDate">
</div>
</body>
</html>
你能说清楚吗,请举个例子。。。我可以帮助用户界面有一个从日期到日期的文本框,我使用的是.NET2.0和ajax日历扩展程序。我想禁用todate Calendar中早于起始日期的所有日期。我已回答了下面的问题检查或转到,但我只想用户不能选择比txtstart中选择的日期更短的日期,我想禁用更短的日期。。谢谢。引用这些链接的链接是asp.net日历控件,而不是具有结束日期的.net 2.0 ajax Extender AjaxToolkit??我知道这将在2.0以上运行。但我的问题与.NET2.0有关。是的,我的答案是针对版本4。我认为不管怎样,这都是一样的——如果您使用RJS.Web.WebControl.PopCalendar来实现所需的结果,或者更新Ajax控件工具包。不过最好是更新工具包?但我们的应用服务器是.net 2.0。在所有答案中,您只是在转储代码。一个好的答案解释了解决方案。
<html>
<head>
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"> </script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script>
$().ready(function () {
$('.dDate, .rDate').datepicker({
showOn: 'both',
buttonImage: "<?=$http?>layout_images/calendar.gif",
buttonImageOnly: true,
beforeShow: customRange,
buttonText: 'Open Calendar',
firstDay: 1,
dateFormat: 'D d M yy',
onSelect: function (date) {
date = $(this).datepicker('getDate');
$('#returningdate').val($.datepicker.formatDate('D d M yy', date));
}
});
});
function customRange(a) {
var b = new Date();
var c = new Date(b.getFullYear(), b.getMonth(), b.getDate());
if (a.id == 'returningdate') {
if ($('.dDate').datepicker('getDate') != null) {
c = $('.dDate').datepicker('getDate');
}
}
return {
minDate: c
}
}
</script>
</head>
<body >
<div style="font-size:11px;">
Depart Date: <input type="text" id="departingdate" class="dDate"><br>
Return Date: <input type="text" id="returningdate" class="rDate">
</div>
</body>
</html>