2012-09-24 5 views
0

Хорошо, поэтому я полностью потерялся от того, как это сделать. Что мне нужно сделать, это проверить текстовое поле с регулярным выражением для некоторого и обязательного поля для всех них. Я настроил его так, когда пользователь нажимает кнопку, каждый раз появляется новый набор полей ввода, так что, если у них есть более одного опыта работы, они могут бесконечно переносить его. Код, который я пытался, не будет работать. Также может потребоваться отметить, что я до сих пор сделал только один адрес из-за столкновения с этой проблемой. Как только я это выясню, я смогу сделать все остальное.Проверка на динамическом texbox и ярлыках

Код 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); 

    } 

Обновление: Один главный вопрос я имею я хочу, чтобы проверить на кнопку мыши перед следующей формы показан. Но я не могу передать объекты, я могу быть немым, но я не уверен, как это сделать. Как если бы у меня были объекты на странице ASP.net, это не проблема, но поскольку я создаю их в коде C#, я не уверен, как это сделать.

+0

Используйте тот же класс css для всех текстовых полей, которые вы хотите проверить. Теперь поместите код проверки jQuery для этого класса css. –

+0

что? никогда не делал jQuery – user1574685

+0

проверить это: http://stackoverflow.com/questions/1854556/check-if-inputs-are-empty-using-jquery и http://api.jquery.com/class-selector/ –

ответ

1

Мой совет - назначить уникальное имя каждому элементу управления, который вы хотите проверить.

В PostBack вы должны затем проверить их систематически through Request.Form.

Другим подходом было бы добавить записи по одному, предоставляя только одну панель ввода с кнопкой «добавить». Когда пользователь добавляет запись, ее отправляют на сервер, проверяют и сохраняют в сеансе, и сохраненные записи затем отображаются пользователю.

Этот подход упрощает проверку, но, очевидно, у вас больше поездок на сервер. Ajax может помочь уменьшить накладные расходы здесь.

+0

Я подумал об этом ... плохо учтите все ваши предложения, я получил его, чтобы работать, просто сообщение об ошибке не появляется сейчас – user1574685

Смежные вопросы