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







All Articles