2010-08-11 114 views
-1

我有一個文本框,圖像按鈕和用戶控件內的日曆控件從日曆中選擇日期並設置文本框中選定的日期。除了驗證之外,所有的都很好。我試圖驗證文本框的值是一個有效的日期。如果它不是有效的日期,我想重新從日曆中選擇一個日期,但它看起來像驗證失敗,如果我沒有在文本框中輸入正確的日期,我不能重新選擇日期。基本上,驗證要求我在嘗試選擇有效日期之前先修復無效日期,但是我想在驗證失敗時重新選擇。驗證失敗後如何在日曆控件中重新選擇日期?

<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

你不回答你自己的問題。如果文本框中的文本不是有效的日期,那麼如何重新選擇它?我錯過了什麼嗎? – madcapnmckay 2010-08-11 21:12:24

+0

@madcapnmckay:我有相同的意見 @Cindy:當文本框中的文本不是有效的開始日期並且不匹配時,如何重新選擇日期?手工輸入日期是否必要?您可以改爲使用標籤,並將日期選擇器中的日期存儲在標籤中,以便用戶無法輸入無效日期? – Peter 2010-08-11 22:16:11

回答

0

這已解決。只需設置不同的驗證組名稱,一切工作正常。

0

Acalally我想出了這一個。通過將驗證組添加到僅文本框和所需的驗證器,而不是日曆控件。即使文本框的值無效,它也將允許我從日曆控件中重新選擇。

+0

但在這裏我有另一個問題。一切正常,除非如果文本框的值是無效的,我可以看到錯誤信息。但是,如果我單擊此用戶控件外的提交按鈕,它不會提交表單,但我的錯誤消息消失。理想情況下,我希望我的驗證錯誤消息保留,即使我點擊提交按鈕。 – Cindy 2010-08-12 15:29:45

相關問題