我需要从页面上生成的动态控件上点击按钮获得价值

有很多控件是生成我想在页面上动态生成的按钮点击保存值,任何人都可以帮我这个。 我是这个领域的新手,所以我使用代码中的许多类型的代码,但它不能..

我们在哪里使用Page_Init,在这里我们得到我们想要的所有ID只有ControlId并且不能获得Value而且从Page_Init我们无法获得复选框和radiobutton ID f复选框和Radiobutton被检查然后ID将来,否则不会来,值也不来…

protected void Page_Init(object sender, EventArgs e) { List keys = Request.Form.AllKeys.Where(key => key.Contains("MainContent$")).ToList(); } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString["ID"] != null) { CreateDynamicForm(Convert.ToInt32(Request.QueryString["ID"])); } } } protected void CreateDynamicForm(int id) { DataTable dt = objDl.FetchList(id); if (dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { string text = Convert.ToString(dt.Rows[i]["ControlToDisplay"]); string chkval = Convert.ToString(dt.Rows[i]["IsActive"]); if (text == "Checkbox") { CheckBox chk = new CheckBox(); chk.ID = "Checkbox" + i; string ID = chk.ID; chk.Attributes["style"] = "margin-left: 87px;line- height: 3; "; if (chkval == "True") { chk.Checked = true; } else { chk.Checked = false; } Label lbl = new Label(); lbl.Text = Convert.ToString(dt.Rows[i]["FieldLabel"]); panelDynamic.Controls.Add(lbl); panelDynamic.Controls.Add(chk); Literal lt = new Literal(); lt.Text = "
"; panelDynamic.Controls.Add(lt); hdnID.Value = hdnID + "," + ID; HdnType.Value = HdnType + "," + "Checkbox"; } if (text == "Dropdownlist") { int j = 0; DropDownList ddlList = new DropDownList(); ddlList.ID = "DdlDisplay" + i; ddlList.CssClass = "form-group"; // ddlList.CssClass = "col-sm-3"; ddlList.Attributes["style"] = "margin-left: 96px;width: 151px; padding - left: 43px; "; string texts = Convert.ToString(dt.Rows[i] ["OptionValue"]); string[] txtcount = texts.Split(','); foreach (var items in txtcount) { if (items.TrimStart().TrimEnd() != "") { j++; ListItem ltm = new ListItem(); //ltm.Attributes["style"] = "padding-left: 43px; "; ltm.Value = "Listitem" + j; ltm.Text = Convert.ToString(items); //ddlList.Items.Add(txt); ddlList.Items.Add(new ListItem(ltm.Text, ltm.Value)); } } hdnID.Value = hdnID + "," + ddlList.ID; HdnType.Value = HdnType + "," + "Dropdownlist"; Label lbl = new Label(); lbl.Text = Convert.ToString(dt.Rows[i]["FieldLabel"]); panelDynamic.Controls.Add(lbl); panelDynamic.Controls.Add(ddlList); Literal lt = new Literal(); lt.Text = "
"; panelDynamic.Controls.Add(lt); } if (text == "SingleLineTextBox") { TextBox textb = new TextBox(); textb.ID = "TextBox" + i; textb.Attributes["style"] = "margin-left: 87px;"; textb.Attributes["required"] = "true"; Label lbl = new Label(); lbl.Text = Convert.ToString(dt.Rows[i]["FieldLabel"]); panelDynamic.Controls.Add(lbl); panelDynamic.Controls.Add(textb); Literal lt = new Literal(); lt.Text = "
"; panelDynamic.Controls.Add(lt); hdnID.Value = hdnID + "," + textb.ID; HdnType.Value = HdnType + "," + "SingleLineTextBox"; } if (text == "Multiline Textbox") { TextBox textMulti = new TextBox(); textMulti.ID = "MultiTextBox" + i; textMulti.TextMode = TextBoxMode.MultiLine; textMulti.Attributes["style"] = "margin-left: 87px; margin - top: 16px; "; textMulti.Attributes["required"] = "true"; Label lbl = new Label(); lbl.Text = Convert.ToString(dt.Rows[i]["FieldLabel"]); panelDynamic.Controls.Add(lbl); panelDynamic.Controls.Add(textMulti); Literal lt = new Literal(); lt.Text = "
"; panelDynamic.Controls.Add(lt); hdnID.Value = hdnID + "," + textMulti.ID; HdnType.Value = HdnType + "," + "Multiline Textbox"; } if (text == "RadioButton") { RadioButton rdb = new RadioButton(); rdb.ID = "rdb" + i; rdb.Attributes["style"] = "margin-left: 87px;line- height: 4"; Label lbl = new Label(); lbl.Text = Convert.ToString(dt.Rows[i]["FieldLabel"]); panelDynamic.Controls.Add(lbl); panelDynamic.Controls.Add(rdb); Literal lt = new Literal(); lt.Text = "
"; panelDynamic.Controls.Add(lt); hdnID.Value = hdnID + "," + rdb.ID; HdnType.Value = HdnType + "," + "RadioButton"; } } } } protected void btn_submit_Click(object sender, EventArgs e) { }

这里有一个完整的演示片段,介绍如何处理从动态控件创建和读取值。 然后,您可以根据自己的需要进行调整。

 protected void Page_Load(object sender, EventArgs e) { createDynamicControls(); } public void createDynamicControls() { //add a textbox TextBox tb = new TextBox(); tb.ID = "DynamicTextBox"; tb.Text = "TextBox Content"; PlaceHolder1.Controls.Add(tb); //add a dropdownlist DropDownList drp = new DropDownList(); drp.ID = "DynamicDropDownList"; drp.Items.Insert(0, new ListItem("Value A", "0", true)); drp.Items.Insert(1, new ListItem("Value B", "1", true)); PlaceHolder1.Controls.Add(drp); //add a button Button btn = new Button(); btn.Text = "Submit Dynamic Form"; btn.Click += Button1_Click; PlaceHolder1.Controls.Add(btn); } protected void Button1_Click(object sender, EventArgs e) { //find the dynamic controls again with findcontrol TextBox tb = FindControl("DynamicTextBox") as TextBox; DropDownList drp = FindControl("DynamicDropDownList") as DropDownList; //visualize the values Label1.Text = tb.Text + "
"; Label1.Text += drp.SelectedItem.Text; }

aspx