Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
155 views
in Technique[技术] by (71.8m points)

c# - I need to get value on button click from dynamic control which was generated on Page

There have many controls are Generated I want to save value on button click which is dynamically generated on page,Can any one Help me to this. I am new in this field so i m using many types of code from code but it cant ..

Where as we use Page_Init, In this we get all ID where we want only ControlId and cant get Value and from Page_Init we cant get checkbox and radiobutton ID f checkbox and Radiobutton are checked then ID will come otherwise not come,value are also not 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)
{

}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Here a complete demo snippet how to handle creating and reading values from dynamic controls. You can then adapt it to your own 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;
}

The aspx

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
<br />
<br />
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

57.0k users

...