【问题标题】:how to disable previous dates in CalendarExtender control through its render event?如何通过其呈现事件禁用 CalendarExtender 控件中的先前日期?
【发布时间】:2011-04-09 21:32:19
【问题描述】:

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

【问题讨论】:

  • 我认为不可能避免使用 javascript 警报方法。
  • 是的,这就是我所害怕的。谢谢!

标签: asp.net ajaxcontroltoolkit


【解决方案1】:

在页面加载中将日历扩展器的 StartDate 属性设置为 DateTime.Now.Date 这会将以前的日期显示为不可选择

【讨论】:

    【解决方案2】:

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

    如何确保用户不会选择早于今天或晚于今天的日期

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

    防止用户选择早于今天的日期

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

    选择大于今天的日期

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

    向 CalendarExtender 控件添加验证

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

    1. Extender 添加到ValidationControl。为此,拖放ValidationControl > 单击ValidationControl 的智能标签 > 选择Add Extender。从扩展程序向导中,选择ValidatorCalloutExtender。使用这种方法可以非常容易地发现控件扩展器并将其附加到控件。在 VS 2005 中,您必须手动执行此过程,即连接控制扩展器。
    2. 您可以选择不添加扩展器。 我们将继续使用选项 A。我们将在 TextBox 中添加两个 ValidationControls。第一个是CompareValidator,用于检查用户是否输入了无效日期(例如:5 月 32 日),第二个是RangeValidator,用于保持所需的日期范围。

    添加比较验证器

    <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 相关的一些提示。随着工具包未来版本的发布,我们应该希望有更简单的方法来实现此功能。

    发件人http://www.dotnetcurry.com/ShowArticle.aspx?ID=149


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

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

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 2014-11-07
      • 1970-01-01
      • 2015-11-15
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2012-02-10
      • 2011-08-04
      相关资源
      最近更新 更多