如何设置asp:Calendar控件的“VisibleDate”属性?

时间:2011-01-31 15:47:46

标签: asp.net calendarextender

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

1 个答案:

答案 0 :(得分:2)

我会在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。