I need to get the value when a button is clicked from a dynamic control that was generated on a page
Many controls have been created. I want to store the value on button click that is dynamically generated on the page. Can anyone help me with this. I'm new to this field, so I use many types of code from code, but it can't ..
Where we use Page_Init, in this we get all IDs, where we only want the ControlId and cannot get the value, and from Page_Init we cannot get the ID checkbox and the ID checkbox and the Radiobutton checkbox, then the ID will be different, if it did not come, the value is also don't come ...
protected void Page_Init(object sender, EventArgs e)
{
List<string> 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 = "<br />";
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 = "<br />";
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 = "<br />";
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 = "<br />";
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 = "<br />";
panelDynamic.Controls.Add(lt);
hdnID.Value = hdnID + "," + rdb.ID;
HdnType.Value = HdnType + "," + "RadioButton";
}
}
}
}
protected void btn_submit_Click(object sender, EventArgs e)
{
}
+3
source to share
1 answer
Here's a complete demo snippet of how to handle creating and reading values from dynamic controls. Then you can tailor it to your needs.
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 + "<br>";
Label1.Text += drp.SelectedItem.Text;
}
Aspx
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<br />
<br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
+1
source to share