我从未真正使用过 Ajax 日历扩展,但我阅读了一些关于它的内容,所以这里有一个镜头:
在服务器端执行限制日期的逻辑可能是最简单的。但据我所知,CalendarExtender 不允许服务器端事件。但解决此问题的一种方法是向您的页面添加一个隐藏的 asp:button 和一个隐藏字段,并使用事件 OnClientDateSelectionChanged 作为第一个 CalendarExtender 来存储日期并伪造单击调用代码隐藏方法的按钮。
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>
我自己没有尝试过这段代码 :) 只是在谷歌搜索和阅读后把它放在一起。希望对您有所帮助。