如何使用任何客户端脚本或服务器端脚本在日历扩展器中禁用上一个日期

时间:2010-12-11 07:52:51

标签: c# javascript asp.net-ajax

我有两个带有calendarextender和One Label的文本框。第一个文本框表示开始日期,第二个文本框表示结束日期,标签表示没有天数。

我遇到的问题是,如果我选择结束日期,我想要禁用所有日期在开始日期之前,使用任何客户端脚本或服务器端脚本....... 但是计算开始日期和结束日期并将其存储在(标签)NO.OF Days Leave中,我只需要服务器端脚本。

示例:开始日期为11-12-2010,结束日期为14-12-2010,剩余天数为4.

任何人都可以帮助我......我是Asp.net的新人........

1 个答案:

答案 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搜索和阅读之后将它放在一起。希望它有所帮助。