【问题标题】:How to set "VisibleDate" property of asp:Calendar control?如何设置 asp:Calendar 控件的“VisibleDate”属性?
【发布时间】:2011-01-31 15:47:46
【问题描述】:

我正在开发一个 ASP.NET 网站,其中我使用了 AJAX 控件工具包的 CalendarExtender 在 asp:TextBox 中选择一个日期。我想根据从 CalendarExtender 控件中选择的日期设置 asp:Calendar 控件的 VisibleDate 属性。我请求你帮助我实现这个功能。 或者有什么方法可以从 CalendarExtender 控件中发回选择日期的页面,以便我可以在代码隐藏中处理 TextChanged 事件并在此事件中设置 VisibleDate 属性处理程序? 谢谢

【问题讨论】:

    标签: asp.net calendarextender


    【解决方案1】:

    我会在 TextChanged-event 上使用异步回发来设置 VisibleDate 属性:

    aspx:

    <asp:UpdatePanel ID="UdpDatePanel" runat="server" UpdateMode="conditional" ChildrenAsTriggers="false"  >
       <ContentTemplate>
          <asp:Calendar ID="Calendar1"  runat="server" />
          <asp:TextBox ID="TxtDate" AutoPostBack="true" runat="server" />
          <asp:CalendarExtender ID="CalendarExtender1" TargetControlID="TxtDate" runat="server" />
       </ContentTemplate> 
       <Triggers>
            <asp:AsyncPostBackTrigger ControlID="TxtDate" EventName="TextChanged" />
       </Triggers>
    </asp:UpdatePanel> 
    

    代码隐藏:

    Public Partial Class CalendarDemo
        Inherits System.Web.UI.Page
    
        Private Sub TxtDate_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtDate.TextChanged
            Dim d As Date
            If Date.TryParse(Me.TxtDate.Text, d) Then
                Me.Calendar1.VisibleDate = d
            End If
        End Sub
    
    End Class
    

    通过这种方式,它可以保持高性能,并且您不必弄乱可能在未来版本的 asp.net-ajax 工具包中更改的 javascript。

    【讨论】:

    • Thanx Tim.. 你的建议对我有用。在我的情况下,唯一的区别是 asp:Calendar 控件不在同一个 UpdatePanel 中。它位于不同的 UpdatePanel 中,没有任何特殊属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 2011-06-28
    • 2013-02-05
    • 1970-01-01
    • 2017-04-12
    相关资源
    最近更新 更多