Я не думаю, что он поддерживается в текущей версии Toolkit для ограничения выбираемых дат. Это простой обходной путь, обрабатывающий событие ClientDateSelectedChanged
и проверяющий выбранную дату:
Как убедиться, что пользователь не выбирает дату раньше, чем сегодня или больше, чем сегодня
Могут быть случаи, когда вы не хотите, чтобы пользователь выбирал день раньше текущей даты. Например: когда вы предоставляете пользователю форму для бронирования билетов, вы не хотели бы, чтобы он выбрал более раннюю дату. Чтобы выполнить это требование, используйте следующий код 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
Простой способ добавить проверку в Календарь - добавить ValidationControl в текстовое поле, связанное с CalendarExtender. У вас есть два варианта:
- Добавьте
Extender
к ValidationControl
. Для этого перетащите ValidationControl
> щелчок по смарт-тегу ValidationControl
> и выберите Add Extender
. В мастере расширителя выберите ValidatorCalloutExtender
. Использование этого подхода делает чрезвычайно простым обнаружение и подключение расширителей элементов управления к элементам управления. В VS 2005 вы должны были выполнить этот процесс вручную, подключив расширители управления.
- Вы можете не добавлять расширитель.
Мы продолжим с вариантом А. Мы будем добавлять два
ValidationControls
к TextBox
. Во-первых, CompareValidator
, чтобы проверить, не вводит ли пользователь недопустимую дату (например, 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>
В коде вашей страницы добавьте этот код
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
Другим продвинутым подходом было бы расширение javascript для CalendarExtender, но тогда у вас есть своя собственная версия инструментария ajax.
http://codegoeshere.blogspot.com/2007/06/extending-calendarextender.html