asp.net - 如何通过其呈现事件禁用 CalendarExtender 控件中的先前日期?

标签 asp.net ajaxcontroltoolkit

基本上,我只想允许选择比今天更大的日期。我更喜欢这种方式以避免显示警报消息。

最佳答案

我认为当前版本的工具包不支持限制可选择的日期。这是处理 ClientDateSelectedChanged 的简单解决方法- 事件并验证所选日期:

How to make sure user does not select a date earlier than today or greater than today

在某些情况下,您可能不希望用户选择早于当前日期的一天。例如:当您向用户提供订票表格时,您不希望他选择较早的日期。要实现此要求,请使用以下 JavaScript 代码。

Prevent the User from selecting a Date Earlier than today

<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>

Select Date Greater than today

在javascript中,只需更改这一行 sender._selectedDate > new Date() 注意:您可能会认为用户仍然可以通过在文本框中键入或输入无效日期来更改日期。嗯,这可以使用 ValidationControl 轻松处理,并在下一个技巧中介绍。

Add validation to the CalendarExtender Control

向日历添加验证的一个简单方法是将 ValidationControl 添加到与 CalendarExtender 关联的文本框。您有两个选择:

  1. 添加ExtenderValidationControl 。为此,请拖放 ValidationControl > 点击 ValidationControl 的智能标签> 选择Add Extender 。从扩展器向导中,选择 ValidatorCalloutExtender 。使用这种方法可以非常轻松地发现控件扩展器并将其附加到控件。在 VS 2005 中,您必须通过连接控制扩展器来手动完成此过程。
  2. 您可以选择不添加扩展器。 我们将继续选择 A。我们将添加两个 ValidationControlsTextBox 。第一个,一个CompareValidator检查用户是否没有输入无效日期(例如:5 月 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 相关的一些提示。 。随着该工具包 future 版本的发布,我们应该希望存在更简单的方法来实现此功能。

来自:http://www.dotnetcurry.com/ShowArticle.aspx?ID=149

<小时/>

另一种高级方法是扩展 CalendarExtender javascript,但这样您就拥有了自己的自定义版本的 ajax 工具包。

http://codegoeshere.blogspot.com/2007/06/extending-calendarextender.html

关于asp.net - 如何通过其呈现事件禁用 CalendarExtender 控件中的先前日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5608062/

相关文章:

c# - 使用 MongoDB 进行 CRUD 的首选方式是什么(通过 C# 驱动程序)?

c# - Gridview 获取 Checkbox.Checked 值

c# - 具有自动完成功能的文本框

css - 为什么 CSS 样式仅在放置在我的表单中的样式标记中时才会生效,而不是在关联的 CSS 文件中?

javascript - 回发问题后填充图像

javascript - 限制用户上传带有特殊字符的文件

c# - LocalDB 在 Visual Studio 2015 中无法识别

asp.net - 如何仅在单击按钮时激活验证器

c# - ASPxPopup 不会在 ASPxGridView 选择更改时更新

java - 使用 Java 展开和折叠 Ajax ToolKit Accordion