我在用户控件中有一个文本框,一个图像按钮和一个日历控件,用于从日历中选择日期并在文本框中设置所选日期。除验证外,一切正常。我试图将文本框的值验证为有效日期。如果它不是一个有效的日期,我想从日历中重新选择一个日期,但看起来如果验证失败,如果我没有在文本框中输入正确的日期,我就无法重新选择日期。基本上,验证要求我在尝试选择有效日期之前先修复无效日期,但我想在验证失败时重新选择。
<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;
}
答案 0 :(得分:0)
Acutally我想出了这个。通过仅将验证组添加到文本框和必需的验证器,而不是日历控件。即使文本框值无效,它也允许我从日历控件中重新选择。
答案 1 :(得分:0)
这已经解决了。只需设置不同的验证组名称,一切正常。