我有两个带有calendarextender和One Label的文本框。第一个文本框表示开始日期,第二个文本框表示结束日期,标签表示没有天数。
我遇到的问题是,如果我选择结束日期,我想要禁用所有日期在开始日期之前,使用任何客户端脚本或服务器端脚本....... 但是计算开始日期和结束日期并将其存储在(标签)NO.OF Days Leave中,我只需要服务器端脚本。
示例:开始日期为11-12-2010,结束日期为14-12-2010,剩余天数为4.
任何人都可以帮助我......我是Asp.net的新人........
答案 0 :(得分:0)
我从来没有真正使用过Ajax Calendar Extension,但我读了一些关于它的内容,所以这里有一个镜头:
在服务器端执行限制日期的逻辑可能是最简单的。但据我所知,CalendarExtender不允许服务器端事件。但是解决这个问题的方法是在页面中添加一个隐藏的asp:按钮和一个隐藏字段,并使用事件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>
我自己没有尝试过这个代码:)在google搜索和阅读之后将它放在一起。希望它有所帮助。