如何在验证失败后从日历控件中选择日期?

时间:2010-08-11 21:08:30

标签: .net asp.net calendar controls

我在用户控件中有一个文本框,一个图像按钮和一个日历控件,用于从日历中选择日期并在文本框中设置所选日期。除验证外,一切正常。我试图将文本框的值验证为有效日期。如果它不是一个有效的日期,我想从日历中重新选择一个日期,但看起来如果验证失败,如果我没有在文本框中输入正确的日期,我就无法重新选择日期。基本上,验证要求我在尝试选择有效日期之前先修复无效日期,但我想在验证失败时重新选择。

<asp:UpdatePanel ID="UpdatePanel1" runat="server">    
    <ContentTemplate>        
        <div style="width: 400px">
            <asp:TextBox ID="TextBox1" runat="server" Width="100px"></asp:TextBox>            
            <asp:ImageButton ID="ImgButton1" runat="server" ImageUrl="~/Images/cal.gif" OnClick="ImgButton1_Click" />        
            <asp:Calendar ID="Calendar1" runat="server" DayNameFormat="FirstLetter" Width="90px" Font-Names="Arial" Font-Size="11px" NextMonthText="»" PrevMonthText="«" SelectionMode="DayWeekMonth" SelectMonthText="»" SelectWeekText="›" CssClass="myCalendar" BorderStyle="None" CellPadding="1" OnSelectionChanged="Calendar1_SelectionChanged" Visible="False">
                <OtherMonthDayStyle ForeColor="Gray" />                
                <DayStyle CssClass="myCalendarDay" />                
                <SelectedDayStyle Font-Bold="True" Font-Size="12px" />                
                <SelectorStyle CssClass="myCalendarSelector" />                
                <NextPrevStyle CssClass="myCalendarNextPrev" />                
                <TitleStyle CssClass="myCalendarTitle" />            
            </asp:Calendar>  
            <asp:CustomValidator ID="cusValidator1" runat="server" OnServerValidate="Customer_Validation" />
            <asp:Label ID="lblError" Text="invalid input" Visible="false" runat="server" />
        </div>    
    </ContentTemplate>
</asp:UpdatePanel>

       protected void Calendar1_SelectionChanged(object sender, EventArgs e)
        {    // Set Date Time value into the TextBox control    
            TextBox1.Text = Calendar1.SelectedDate.ToString("MM/dd/yyyy");        
            // Hide the Calendar control after selecting the date    
            Calendar1.Visible = false;    
        }
        protected void ImgButton1_Click(object sender, EventArgs e)
        {            
             Calendar1.Visible = !Calendar1.Visible;        
        }

2 个答案:

答案 0 :(得分:0)

Acutally我想出了这个。通过仅将验证组添加到文本框和必需的验证器,而不是日历控件。即使文本框值无效,它也允许我从日历控件中重新选择。

答案 1 :(得分:0)

这已经解决了。只需设置不同的验证组名称,一切正常。