2012-09-27 85 views
2

好吧,所以我一直在處理這個問題兩天,現在我還沒有解決這個問題。我想用RegularExpressionValidation來驗證文本框的內容。 驗證動態texbox的按鈕點擊

  • 如果是,那麼他們點擊按鈕打開輸入的形式
  • 填寫texbox的

    1. 用戶從下拉框選擇是或否,並非所有的都是必需的,但如果他們在這樣填寫的日期則必須採用適當的格式。
    2. 如果有效,嚮導上的下一個按鈕將再次可見,並且會顯示一組新的文本框。 注意:下一個按鈕出現的唯一時間是一切有效。

    我的主要問題是,我想它來驗證僅此嚮導步驟而不是整個「頁」

    我不斷收到錯誤,每當我按一下按鈕,但它可能是從正則表達式。驗證():

    System.NullReferenceException:未將對象引用設置爲對象的實例。

    Source Error: 
    
    
    Line 590: 
    Line 591:  
    Line 592:  addressRegEx.Validate(); <---Whats in red 
    Line 593:  EmployerRequired.Validate(); 
    Line 594:  phoneRegex.Validate(); 
    

    C#:

    protected void Page_Load(object sender, EventArgs e) 
    
    { 
    for (int i = 0; i < TotalNumberAddedEmployment; ++i) 
        { 
         addcontrolsemployment(i + 1); 
        } 
        if (Wizard1.ActiveStep == WizardStep3) 
        { 
    
         Button nxtButton = (Button)Wizard1.FindControl("StepNavigationTemplateContainerID$StepNextButton"); 
         nxtButton.Visible = false; 
        } 
    
    } 
    public void addcontrolsemployment(int controlnumberEmp) 
    { 
    
    
    
        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_" + controlnumberEmp; 
        employerTextbox.Width = 250; 
        //employerTextbox.Text = "Enter Employer Here"; 
    
        addressTextbox.ID = "AddressTextbox_" + controlnumberEmp; 
        addressTextbox.AutoPostBack = true; 
        phoneTextbox.ID = "phoneTextbox_" + controlnumberEmp; 
        phoneTextbox.AutoPostBack = true; 
        fromDateTextbox.ID = "fromDateTextbox_" + controlnumberEmp; 
        toDateTextbox.ID = "toDateTextbox_" + controlnumberEmp; 
        toDateTextbox.AutoPostBack = true; 
        supervisorTextbox.ID = "supervisorTextbox_" + controlnumberEmp; 
        supervisorTextbox.AutoPostBack = true; 
        jobTitleTextbox.ID = "jobTitleTexbox_" + controlnumberEmp; 
        jobTitleTextbox.AutoPostBack = true; 
        dutiesTextbox.ID = "dutiesTextbox_" + controlnumberEmp; 
        dutiesTextbox.Width = 250; 
        dutiesTextbox.AutoPostBack = true; 
        hoursTextbox.ID = "hoursTexbox_" + controlnumberEmp; 
        hoursTextbox.AutoPostBack = true; 
        wageTextbox.ID = "wageTexbox_" + controlnumberEmp; 
        wageTextbox.AutoPostBack = true; 
        leavingTextbox.ID = "leavingTexbox_" + controlnumberEmp; 
        leavingTextbox.Width = 250; 
        leavingTextbox.AutoPostBack = true; 
        //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 EmployerRequired = new RequiredFieldValidator(); 
        var phoneRegex = new RegularExpressionValidator(); 
        var toDateRegex = new RegularExpressionValidator(); 
        var fromDateRegex = new RegularExpressionValidator(); 
        var supervisorRegex = new RegularExpressionValidator(); 
        var jobTitleRegex = new RegularExpressionValidator(); 
        var dutiesRegex = new RegularExpressionValidator(); 
        var hoursRegex = new RegularExpressionValidator(); 
        var wageRegex = new RegularExpressionValidator(); 
        var leavingRegex = new RegularExpressionValidator(); 
    
    
    
    
        EmployerRequired.Text = "Enter NA if No History"; 
        EmployerRequired.ID = "employerRequired" + controlnumberEmp; 
        EmployerRequired.ControlToValidate = employerTextbox.ID; 
        EmployerRequired.ValidationGroup = "EmploymentValid"; 
    
    
    
        addressRegEx.ValidationExpression = ".{0,50}"; 
        addressRegEx.Text = "Please Enter less than 50 characters for address"; 
        addressRegEx.ErrorMessage = "Please Enter less than 50 characters for address"; 
        addressRegEx.ControlToValidate = addressTextbox.ID; 
        //addressRegEx.ValidationGroup = "EmploymentValid"; 
    
        phoneRegex.ID = "phoneRegex" + controlnumberEmp; 
        phoneRegex.Text = "Please enter in (###)###-####"; 
        phoneRegex.ControlToValidate = phoneTextbox.ID; 
        phoneRegex.ValidationExpression = @"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"; 
        // phoneRegex.ValidationGroup = "EmploymentValid"; 
    
        toDateRegex.ID = "toDateRegex" + controlnumberEmp; 
        toDateRegex.Text = "Please enter in MM/DD/YYY form"; 
        [email protected]"^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\d)\d{2}|0?2/29/((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$"; 
        toDateRegex.ControlToValidate = toDateTextbox.ID; 
        // toDateRegex.ValidationGroup = "EmploymentValid"; 
    
        fromDateRegex.ID = "fromDateRegex" + controlnumberEmp; 
        fromDateRegex.Text = "Please enter in MM/DD/YYY form"; 
        [email protected]"^(((0?[1-9]|1[012])/(0?[1-9]|1\d|2[0-8])|(0?[13456789]|1[012])/(29|30)|(0?[13578]|1[02])/31)/(19|[2-9]\d)\d{2}|0?2/29/((19|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(([2468][048]|[3579][26])00)))$"; 
        fromDateRegex.ControlToValidate = fromDateTextbox.ID; 
        // fromDateRegex.ValidationGroup = "EmploymentValid"; 
    
        supervisorRegex.ID = "supervisorRegex" + controlnumberEmp; 
        supervisorRegex.Text = "Please enter in 20 characters or less"; 
        supervisorRegex.ValidationExpression = ".{0,20}"; 
        supervisorRegex.ControlToValidate = supervisorTextbox.ID; 
        // supervisorRegex.ValidationGroup = "EmploymentValid"; 
    
        jobTitleRegex.ID = "jobTitleRegex" + controlnumberEmp; 
        jobTitleRegex.Text = "Please enter 30 characters or less"; 
        jobTitleRegex.ValidationExpression = ".{0,30}"; 
        jobTitleRegex.ControlToValidate = jobTitleTextbox.ID; 
        // jobTitleRegex.ValidationGroup = "EmploymentValid"; 
    
        dutiesRegex.ID = "dutiesRegex" + controlnumberEmp; 
        dutiesRegex.Text = "Please enter 60 characters or less"; 
        dutiesRegex.ValidationExpression = ".{0,60}"; 
        dutiesRegex.ControlToValidate = dutiesTextbox.ID; 
        // dutiesRegex.ValidationGroup = "EmploymentValid"; 
    
        hoursRegex.ID = "hoursRegex" + controlnumberEmp; 
        hoursRegex.Text = "Please enter up to 3 digits"; 
        hoursRegex.ValidationExpression = "[0-9]{0,3}"; 
        hoursRegex.ControlToValidate = hoursTextbox.ID; 
        // hoursRegex.ValidationGroup = "EmploymentValid"; 
    
        wageRegex.ID = "wageRegex" + controlnumberEmp; 
        wageRegex.Text = "Please enter in currency format"; 
        wageRegex.ValidationExpression = @"(?n:(^\$?(?!0,?\d)\d{1,3}(?=(?<1>,)|(?<1>))(\k<1>\d{3})*(\.\d\d)?)$)"; 
        wageRegex.ControlToValidate = wageTextbox.ID; 
        // wageRegex.ValidationGroup = "EmploymentValid"; 
    
        leavingRegex.ID = "leavingRegex" + controlnumberEmp; 
        leavingRegex.Text = "Please enter 60 characters or less"; 
        leavingRegex.ValidationExpression = ".{0,60}"; 
        leavingRegex.ControlToValidate = leavingTextbox.ID; 
        // leavingRegex.ValidationGroup = "EmploymentValid"; 
    
    
    
    
        // add the label and textbox to the panel, then add the panel to the form 
        newPanel.Controls.Add(new LiteralControl("<br />")); 
    
        //newPanel.Controls.Add(new LiteralControl("<br />")); 
        newPanel.Controls.Add(new LiteralControl("<table border='2px'><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' colspan='2'>")); 
        newPanel.Controls.Add(employerTextbox); 
        newPanel.Controls.Add(new LiteralControl("<br />")); 
        newPanel.Controls.Add(EmployerRequired); 
    
        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(new LiteralControl("<br />")); 
        newPanel.Controls.Add(addressRegEx); 
        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("<br />")); 
        newPanel.Controls.Add(phoneRegex); 
        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("<br />")); 
        newPanel.Controls.Add(fromDateRegex); 
        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("<br />")); 
        newPanel.Controls.Add(toDateRegex); 
        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("<br />")); 
        newPanel.Controls.Add(supervisorRegex); 
        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("<br />")); 
        newPanel.Controls.Add(jobTitleRegex); 
        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);//next to it 
        newPanel.Controls.Add(new LiteralControl("<br />")); 
        newPanel.Controls.Add(dutiesRegex); 
        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("<br />")); 
        newPanel.Controls.Add(hoursRegex); 
        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("<br />")); 
        newPanel.Controls.Add(hoursRegex); 
        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); // next to it 
        newPanel.Controls.Add(new LiteralControl("<br />")); 
        newPanel.Controls.Add(leavingRegex); 
        newPanel.Controls.Add(new LiteralControl("</td></tr></table><br /><hr>")); 
    
    
    
        addressRegEx.Validate(); 
        EmployerRequired.Validate(); 
        phoneRegex.Validate(); 
        toDateRegex.Validate(); 
        fromDateRegex.Validate(); 
        supervisorRegex.Validate(); 
        jobTitleRegex.Validate(); 
        dutiesRegex.Validate(); 
        hoursRegex.Validate(); 
        wageRegex.Validate(); 
        leavingRegex.Validate(); 
        if((EmployerRequired.IsValid) && (addressRegEx.IsValid) && (phoneRegex.IsValid) && (toDateRegex.IsValid) && (toDateRegex.IsValid) && (fromDateRegex.IsValid)&& (supervisorRegex.IsValid)&&(jobTitleRegex.IsValid)&&(dutiesRegex.IsValid)&&(hoursRegex.IsValid)&&(wageRegex.IsValid) && (leavingRegex.IsValid)) 
        { 
    
        EmploymentPlaceHolder.Controls.Add(newPanel); 
    
        } 
    
    } 
    
    protected int TotalNumberAddedEmployment 
    { 
        get { return (int)(ViewState["TotalNumberAddedEmployment"] ?? 0); } 
        set { ViewState["TotalNumberAddedEmployment"] = value; } 
    } 
    protected void EmploymentButton_Click(object sender, EventArgs e) 
    { 
    
    
    
    
         Page.Validate(); 
    
         if (Page.IsValid) 
         { 
          Button nxtButton = (Button)Wizard1.FindControl("StepNavigationTemplateContainerID$StepNextButton"); 
          nxtButton.Visible = false; 
          return; 
    
         } 
         else 
         { 
          // Increase the number added and add the new label and textbox 
          TotalNumberAddedEmployment++; 
          addcontrolsemployment(TotalNumberAddedEmployment); 
    
          Button nxtButton =  (Button)Wizard1.FindControl("StepNavigationTemplateContainerID$StepNextButton"); 
          nxtButton.Visible = true; 
         } 
    
    
    
    } 
    protected void ExperienceDropDownList_SelectedIndexChanged(object sender, EventArgs e) 
    { 
        if (ExperienceDropDownList.SelectedValue == "Yes") 
        { 
         Button nxtButton = (Button)Wizard1.FindControl("StepNavigationTemplateContainerID$StepNextButton"); 
         nxtButton.Visible = false; 
         addcontrolsemployment(1); 
    
    
        } 
        else 
        { 
    
         Button nxtButton = (Button)Wizard1.FindControl("StepNavigationTemplateContainerID$StepNextButton"); 
         nxtButton.Visible = true; 
    
        } 
    
    
    } 
    
  • 回答