Problem with ControlToValidate in dynamic create validation controls

Ado823

New Member
Hi
I have site with two text boxes and dynamically create validation control. This is code from .aspx file: \[code\]<form runat="server"> <asp:TextBox AutoPostBack="true" ID="TextBox1" Text="" runat="server" Width="200px"OnTextChanged="TextBox1_TextChanged"></asp:TextBox> <asp:TextBox ID="TextBox2" runat="server" Visible="True" Width="200px"AutoPostBack="true"></asp:TextBox> <asp:panel ID="Panel1" runat="server"></asp:panel> <asp:TextBox ID="ValidationTB" runat="server" Visible="true"></asp:TextBox> </form> \[/code\]This is my code-behind: \[code\]public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e){ if (TextBox2.Visible) { if (!String.IsNullOrEmpty(TextBox1.Text) && String.IsNullOrEmpty(TextBox2.Text)) { RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator(); RequiredFieldValidator1.Enabled = true; RequiredFieldValidator1.ErrorMessage = "Second field required"; RequiredFieldValidator1.Display = ValidatorDisplay.Dynamic; RequiredFieldValidator1.ControlToValidate = "TextBox2"; Panel1.Controls.Add(RequiredFieldValidator1); RequiredFieldValidator1.Validate(); } if (!String.IsNullOrEmpty(TextBox2.Text) && String.IsNullOrEmpty(TextBox1.Text)) { RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator(); RequiredFieldValidator1.Enabled = true; RequiredFieldValidator1.ErrorMessage = "First field required"; RequiredFieldValidator1.Display = ValidatorDisplay.Dynamic; RequiredFieldValidator1.ControlToValidate = "TextBox1"; Panel1.Controls.Add(RequiredFieldValidator1); RequiredFieldValidator1.Validate(); } if (!String.IsNullOrEmpty(TextBox2.Text) && !String.IsNullOrEmpty(TextBox1.Text)) { if (Convert.ToDateTime(TextBox2.Text) < Convert.ToDateTime(TextBox1.Text)) { ValidationTB.Text = null; RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator(); RequiredFieldValidator1.Enabled = true; RequiredFieldValidator1.ErrorMessage = "Bad range of dates"; RequiredFieldValidator1.Display = ValidatorDisplay.Dynamic; RequiredFieldValidator1.ControlToValidate = "ValidationTB"; Panel1.Controls.Add(RequiredFieldValidator1); RequiredFieldValidator1.Validate(); } } }}protected void TextBox1_TextChanged(object sender, EventArgs e){ RegularExpressionValidator RegularExpressionValidator1 = new RegularExpressionValidator(); RegularExpressionValidator1.ValidationExpression = @"^[0-9]{4}-(((0[13578]|(10|12))-(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)-(0[1-9]|[1-2][0-9]|30)))$"; RegularExpressionValidator1.Enabled = true; RegularExpressionValidator1.ErrorMessage = "Bad format of date"; RegularExpressionValidator1.Display = ValidatorDisplay.Dynamic; if (!String.IsNullOrEmpty(TextBox1.Text)) { RegularExpressionValidator1.ControlToValidate = "TextBox1"; Panel1.Controls.Add(RegularExpressionValidator1); RegularExpressionValidator1.Validate(); } if (!String.IsNullOrEmpty(TextBox2.Text)) { RegularExpressionValidator1.ControlToValidate = "TextBox2"; Panel1.Controls.Add(RegularExpressionValidator1); RegularExpressionValidator1.Validate(); }}\[/code\]}TextBox ValidationTB is just to make validate on empty control.
This validation doesn't work, when I try:
1. To first textbox enter for example: 2009-09-09
2. To second textbox enter for example: 2009-10-09
Now, everything is OK.
3. I change my first textbox on for example 2009-12-09
I get error Bad range of dates - it's OK.
4. I correct first textbox on 2009-09-09, message disappear-OK.
5. Again enter to first textbox 2009-12-09 - I don't have error, but it should be.
What strange - in debug mode I can see, that in code: \[code\] if (Convert.ToDateTime(TextBox2.Text) < Convert.ToDateTime(TextBox1.Text)) { ValidationTB.Text = null; RequiredFieldValidator RequiredFieldValidator1 = new RequiredFieldValidator(); RequiredFieldValidator1.Enabled = true; RequiredFieldValidator1.ErrorMessage = "Bad range of dates"; RequiredFieldValidator1.Display = ValidatorDisplay.Dynamic; RequiredFieldValidator1.ControlToValidate = "ValidationTB"; Panel1.Controls.Add(RequiredFieldValidator1); //In debug window: RequiredFieldValidator1.ControlToValidate = "TextBox2" RequiredFieldValidator1.Validate(); } \[/code\]instead of ValidationTB control, RequiredFieldValidator1.ControlToValidate is set to TextBox2 (it isn't empty, so I haven't error message).
Why TextBox2 is set to RequiredFieldValidator1.ControlToValidate instead of ValidationTB textbox and how I could solve this?
Thanks
Regards
 
Top