На самом деле я никогда не использовал расширение календаря Ajax, но кое-что прочитал, так что вот пример:
Выполнение логики ограничения дат на стороне сервера, вероятно, будет самым простым. Но насколько мне известно, CalendarExtender не допускает событий на стороне сервера. Но для решения этой проблемы добавьте на страницу скрытую кнопку asp: и скрытое поле и используйте событие OnClientDateSelectionChanged
для первого CalendarExtender, чтобы сохранить дату и подделать щелчок по кнопке, вызывающей метод code-behind. *
function dateClickEvent(sender, args)
{
document.getElementById('MyHiddenField').value = sender.get_selectedDate();
(document.getElementById('HiddenDateBtn')).click();
}
Разметка для кнопки и поля выглядит примерно так:
<asp:HiddenField ID="MyHiddenField" runat="server" />
<asp:Button ID="HiddenDateBtn" runat="server" Text="Click" Visible="false"
style="display:none" OnClick="HiddenDateBtn_Click" />
Если вы затем используете RangeValidator и ValidatorCalloutExtender, вы можете установить диапазон
для второго расширителя даты в коде позади.
//In your code-behind
protected void HiddenDateBtn_Click(object sender, EventArgs e)
{
string firstDate = MyHiddenField.Value;
SecondDateRangeValidator.MinimumValue = firstDate;
}
И код ASPX для валидатора должен выглядеть примерно так:
<asp:RangeValidator ID="SecondDateRangeValidator" runat="server"
ControlToValidate="SecondDateTextBox" ErrorMessage="RangeValidator"
Type="Date">
</asp:RangeValidator>
<ajaxToolkit:ValidatorCalloutExtender ID="SecondDateRangeValidator_ValidatorCalloutExtender"
runat="server" Enabled="True" TargetControlID="SecondDateRangeValidator">
</ajaxToolkit:ValidatorCalloutExtender>
Я сам не пробовал этот код :) Просто соберите его после некоторого поиска и чтения. Надеюсь, это поможет.