0

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

4

1 回答 1

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。

于 2011-01-31T16:13:34.093 回答