2012-09-24 40 views
0

好吧,我完全失去了如何做到這一點。我需要做的是使用正則表達式驗證文本框中的所有文本框的一些和必填字段。我已經設置好了,所以當用戶點擊按鈕時,每次都會出現一組新的輸入字段,這樣如果他們有多個工作經驗,他們可以無限次地使用它。我試過的代碼不起作用。也可能要注意,由於遇到此問題,我迄今爲止只完成了一個地址。一旦我知道了,我將能夠完成剩下的工作。對texboxes進行驗證並彈出錯誤消息並傳遞變量

我遇到的一個主要問題是我希望它在顯示下一個面板之前在按鈕上進行驗證。但是我不能傳遞這些對象,我可能是愚蠢的,但我不知道該怎麼做。就像如果我有ASP.net頁面中的對象,這將是沒有問題,但因爲我在c#代碼中創建這些,我不知道該怎麼做。 此外,我需要在彈出窗口中顯示錯誤消息,以便它不佔用面板上的空間。

我知道我在問很多,但我真的很失落。

ASP.net代碼只是一個按鈕。

C#代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 
    // Add any controls that have been previously added dynamically 

    for (int i = 0; i < TotalNumberAdded; ++i) 
    { 
     addcontrolsemployment(i + 1); 
    } 




} 


private void addcontrolsemployment(int controlNumber) 
    { 


     var newPanel = new Panel(); 

     var employerLabel = new Label(); 
     var addressLabel = new Label(); 
     var phoneLabel = new Label(); 
     var fromDateLabel = new Label(); 
     var toDateLabel = new Label(); 
     var supervisorLabel = new Label(); 
     var jobTitleLabel = new Label(); 
     var dutiesLabel = new Label(); 
     var hoursLabel = new Label(); 
     var wageLabel = new Label(); 
     var leavingLabel = new Label(); 

     var employerTextbox = new TextBox(); 
     var addressTextbox = new TextBox(); 
     var phoneTextbox = new TextBox(); 
     var fromDateTextbox = new TextBox(); 
     var toDateTextbox = new TextBox(); 
     var supervisorTextbox = new TextBox(); 
     var jobTitleTextbox = new TextBox(); 
     var dutiesTextbox = new TextBox(); 
     var hoursTextbox = new TextBox(); 
     var wageTextbox = new TextBox(); 
     var leavingTextbox = new TextBox(); 




     // textbox needs a unique id to maintain state information 
     employerTextbox.ID = "EmployerTextBox_" + controlNumber; 
     addressTextbox.ID = "AddressTextbox_" + controlNumber; 
     phoneTextbox.ID = "phoneTextbox_" + controlNumber; 
     fromDateTextbox.ID = "fromDateTextbox_" + controlNumber; 
     toDateTextbox.ID = "toDateTextbox_" + controlNumber; 
     supervisorTextbox.ID = "supervisorTextbox_" + controlNumber; 
     jobTitleTextbox.ID = "jobTitleTexbox_" + controlNumber; 
     dutiesTextbox.ID = "dutiesTextbox_" + controlNumber; 
     dutiesTextbox.Width = 250; 
     hoursTextbox.ID = "hoursTexbox_" + controlNumber; 
     wageTextbox.ID = "wageTexbox_" + controlNumber; 
     leavingTextbox.ID = "leavingTexbox_" + controlNumber; 
     leavingTextbox.Width = 250; 
     //Label text 
     employerLabel.Text = "Employer: "; 
     addressLabel.Text = "Address: "; 
     phoneLabel.Text = "Phone #: "; 
     toDateLabel.Text = "To Date: "; 
     fromDateLabel.Text = "From Date: "; 
     supervisorLabel.Text = "Supervisor: "; 
     jobTitleLabel.Text = "Job Title: "; 
     dutiesLabel.Text = "Major Duties: "; 
     hoursLabel.Text = "Hours Per Week:"; 
     wageLabel.Text = "Final Wage: $"; 
     leavingLabel.Text = "Reason for Leaving: "; 

     //Regular Expression and Required field validators 
     var addressRegEx = new RegularExpressionValidator(); 
     var addressRequired = new RequiredFieldValidator(); 
     addressRequired.Text = "Address is Required"; 
     addressRequired.ErrorMessage = " Please Enter less than 50 characters for address"; 
     addressRequired.ID = "addressRequired" + controlNumber; addressRequired.ControlToValidate = addressTextbox.Text; 
     addressRegEx.ValidationExpression = ".{0,50}"; 
     addressRegEx.ControlToValidate = addressTextbox.Text; 



     // add the label and textbox to the panel, then add the panel to the form 
     newPanel.Controls.Add(new LiteralControl("<table><tr>")); 
     newPanel.Controls.Add(new LiteralControl("<br />")); 
     newPanel.Controls.Add(new LiteralControl("<td class='title-text' >")); 
     newPanel.Controls.Add(employerLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'width='180px'>")); 
     newPanel.Controls.Add(employerTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td></tr><tr><td class='title-text' >")); 
     newPanel.Controls.Add(addressLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(addressTextbox); newPanel.Controls.Add(addressRegEx); newPanel.Controls.Add(addressRequired); 
     newPanel.Controls.Add(new LiteralControl("</td>")); 

     newPanel.Controls.Add(new LiteralControl("<td class='title-text'>")); 
     newPanel.Controls.Add(phoneLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(phoneTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td></tr><tr><td class='title-text'>")); 
     newPanel.Controls.Add(fromDateLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(fromDateTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(toDateLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(toDateTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td></tr><tr><td class='title-text'>")); 
     newPanel.Controls.Add(supervisorLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(supervisorTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(jobTitleLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(jobTitleTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td></tr><tr><td class='title-text'>")); 
     newPanel.Controls.Add(dutiesLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text' colspan='2'>")); 
     newPanel.Controls.Add(dutiesTextbox); 

     newPanel.Controls.Add(new LiteralControl("</td></tr><tr><td class='title-text'>")); 
     newPanel.Controls.Add(hoursLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(hoursTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(wageLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text'>")); 
     newPanel.Controls.Add(wageTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td></tr><tr><td class='title-text'>")); 
     newPanel.Controls.Add(leavingLabel); 
     newPanel.Controls.Add(new LiteralControl("</td><td class='title-text' colspan='2'>")); 
     newPanel.Controls.Add(leavingTextbox); 
     newPanel.Controls.Add(new LiteralControl("</td></tr></table>")); 
     form1.Controls.Add(newPanel); 

    } 

    protected int TotalNumberAdded 
    { 
     get { return (int)(ViewState["TotalNumberAdded"] ?? 0); } 
     set { ViewState["TotalNumberAdded"] = value; } 
    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 


     // Increase the number added and add the new label and textbox 
     TotalNumberAdded++; 
     addcontrolsemployment(TotalNumberAdded); 

    } 

回答

0

您可以使用此代碼嘗試

<asp:TextBox ID="TextBox1" runat="server" ></asp:TextBox> 

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="TextBox1" ErrorMessage="Please Enter good values" 
    ValidationExpression="^.....$" > 
</asp:RegularExpressionValidator> 

諾塔:調整ValidationExpression

+0

我不能用正則表達式中使用ASP頁因爲我在C#代碼中創建了文本框,並且它們是動態的,這意味着每按一下按鈕它們的ID就會改變 – user1574685