如何在ASP.NET中自定义日历选择

时间:2013-03-08 01:30:37

标签: asp.net vb.net

我正在尝试使用textBox,Calendar,Button和Updatefields在ASP.Net中提出一个DateTime Picker。

如果用户点击按钮,带有隐藏日历的面板将变为可见,如果用户选择日期日历,则可见性将变为false,并且日期将分配给textBox。

如果用户想要更改月份,我的问题就出现了,因为在这种情况下,由于正在触发selectionChange,日历将会消失。

我的问题是,如果选择了某个日期,我该如何避免更改月份并限制面板的隐藏?

非常感谢你。

以下是代码示例:

前部:

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>
    <asp:TextBox ID="TextBox2" runat="server" />
            <asp:ImageButton ID="Imbut" runat="server" ImageUrl="imagesNew/calender.png" Height="17px" Width="17px" />
    </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Calendar1" EventName="SelectionChanged" />
        </Triggers>
    </asp:UpdatePanel>

    <br />


    <br />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <asp:Panel ID="Panel1" runat="server">
            <asp:Calendar ID="Calendar1" runat="server" Height="129px" Width="209px">
            </asp:Calendar>
        </asp:Panel>
        </ContentTemplate>
        <Triggers>
        <asp:AsyncPostBackTrigger ControlID="Imbut" EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>

后面部分

Protected Sub Imbut_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Imbut.Click
    Panel1.Visible = True
End Sub

Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As EventArgs) Handles Calendar1.SelectionChanged

        TextBox2.Text = Calendar1.SelectedDate.ToString("dd/MM/yyyy")
        Panel1.Visible = False

End Sub

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题。问题是(如你所说)在回发上控件被重置。我从来没有找到一种方法来优雅地使用asp.net控件。我能够使用jQuery日历和asp:hidden字段完成此操作。通过javascript保持客户端我能够允许用户导航日历更改日期等。当选择日期时,值被设置为ui内的文本框以及隐藏字段然后提交时,值内文本框或隐藏字段在服务器端被选中并在我的情况下用作过滤器参数。