如何在代码后面的占位符中获取文本框值?

我创建了一些文本框,我希望动态获取它们的值。 简而言之,ı解释我的页面:

我有dropDown列表的编号为1到15.当用户选择编号时,我创建了文本框作为选中的编号。 例如; 用户选择3,我创建3个文本框,用户在文本框中写入内容。 这是我的代码:aspx Side:

   

代码背后:

  protected void ddlUserSelected_SelectedIndexChanged(object sender, EventArgs e) { for (int a = 1; a <= int.Parse(ddlUserSelected.SelectedItem.Text); a++) { TextBox txtDate = new TextBox(); Label lbl = new Label(); lbl.Text = "
"; txtDate .Width = 70; txtDate .CssClass = "tbl"; txtDate .ID = "txtDate" + a; PlaceHolder1.Controls.Add(txtDate); PlaceHolder1.Controls.Add(lbl); } }

而且我还有保存按钮。

 protected void btnSave_Click(object sender, EventArgs e) { for (int a = 1; a <= int.Parse(ddlUserSelected.SelectedItem.Text); a++) { //I want to get each textbox value } } 

注意:for循环无所谓(可以删除)我的主要目的是获取文本框值。

如何在btnSave_Click方法中获取文本框值?

下面的代码将帮助您

  protected void ddlUserSelected_SelectedIndexChanged(object sender, EventArgs e) { for (int a = 1; a <= int.Parse(ddlUserSelected.SelectedItem.Text); a++) { TextBox txtDate = new TextBox(); Label lbl = new Label(); lbl.Text = "
"; txtDate.Width = 70; txtDate.CssClass = "tbl"; txtDate.ID = "txtDate" + a; PlaceHolder1.Controls.Add(txtDate); PlaceHolder1.Controls.Add(lbl); } } protected void btnSave_Click(object sender, EventArgs e) { for (int a = 1; a <= int.Parse(ddlUserSelected.SelectedItem.Text); a++) { if(Request.Form.Get("txtDate" + a.ToString()) != null) { var str = Request.Form.Get("txtDate" + a.ToString()); } } }

如果您使用母版页,则使用下面的代码

  if (Request.Form.Get("ctl00$ContentPlaceHolder1$txtDate" + a.ToString()) != null) { var str = Request.Form.Get("ctl00$ContentPlaceHolder1$txtDate" + a.ToString()); } 
 protected void btnSave_Click(object sender, EventArgs e) { for (int a = 1; a <= int.Parse(ddlUserSelected.SelectedItem.Text); a++) { string value = Request.Form["txtDate" + a]; } } 

问题

如果动态地向页面添加控件,则需要在Page InitPage Load上重新加载它们。

否则,当您回发时,您将无法找到它们。

ASPX

         

代码背后

 private int Total { get { int total; if (Int32.TryParse(ddlUserSelected.SelectedItem.Text, out total)) return total; return 0; } } protected void Page_Load(object sender, EventArgs e) { CreateTextBoxes(Total); } protected void ddlUserSelected_SelectedIndexChanged(object sender, EventArgs e) { CreateTextBoxes(Total); } protected void btnSave_Click(object sender, EventArgs e) { int total = Total; for (int a = 1; a <= total; a++) { var textbox = PlaceHolder1.FindControl("txtDate" + a) as TextBox; } } private void CreateTextBoxes(int total) { for (int a = 1; a <= total; a++) { // Make sure we do not add same ID again if (PlaceHolder1.FindControl("txtDate" + a) == null) { TextBox txtDate = new TextBox(); Label lbl = new Label(); lbl.Text = "
"; txtDate.Width = 70; txtDate.CssClass = "tbl"; txtDate.ID = "txtDate" + a; PlaceHolder1.Controls.Add(txtDate); PlaceHolder1.Controls.Add(lbl); } } }