简体   繁体   中英

Add data from dynamically added textbox to database

Below is the code to add textboxes and button dynamically on button click. I need to add tat textbox data to database on another button click. Have no idea on that. Any suggestions will be helpful.

private void button1_Click(object sender, EventArgs e)
{
    int v;
    v = c++;
    panel1.VerticalScroll.Value = VerticalScroll.Minimum;

    Button btn = new Button();
    btn.Name = "btn" + v;
    btn.Text = "Remove";
    btn.Location = new Point(300, 5 + (30 * v));
    btn.Click += new EventHandler(btn_Click);

    TextBox txt = new TextBox();
    txt.Name = "TextBox" + v;
    txt.Location = new Point(30, 5 + (30 * v));
    txt.Tag = btn;

    TextBox txt1 = new TextBox();
    txt1.Name = "TextBox2" + v;
    txt1.Location = new Point(170, 5 + (30 * v));
    txt1.Tag = btn;

    panel1.Controls.Add(txt);
    panel1.Controls.Add(txt1);
    panel1.Controls.Add(btn);
}

private void btn_Click(object sender, EventArgs e)
{
    for (int i = panel1.Controls.Count - 1; i >= 0; i--) 
    {
        var item = panel1.Controls[i];

        if (item.Tag == sender || item == sender)
            panel1.Controls.Remove(item);
    }
}

Solution : You need to save the Name of the dynamic TextBox Controls before accessing them as below:

List<String> controlNames=new List<String>();
TextBox txt = new TextBox();
txt.Name = "TextBox" + v;
controlNames.Add(txt.Name);
txt.Location = new Point(30, 5 + (30 * v));
txt.Tag = btn;


TextBox txt1 = new TextBox();
txt1.Name = "TextBox2" + v;
controlNames.Add(txt1.Name);
txt1.Location = new Point(170, 5 + (30 * v));
txt1.Tag = btn;

Now access them while to save the data into Database

protected void btnSaveData_Click(object sender, EventArgs e)
{

    //Read TextBox Values
    TextBox txBox1 = (TextBox) Controls.Find(controlNames[0],true)[0];
    TextBox txtBox2 = (TextBox) Controls.Find(controlNames[1],true)[0];
    MySqlConnection con = new MySqlConnection("connection string here");
    String query="INSERT INTO [TABLENAME] ([COLUMNNAME1],[COLUMNNAME2]) VALUES(@COLUMNVALUE1 , @COLUMNVALUE2)";
    MySqlCommand command = new MySqlCommand(query,con);

    command.Parameters.AddWithValue("@COLUMNNAME1",txBox1.Text);
    command.Parameters.AddWithValue("@COLUMNNAME2",txBox2.Text);

    int status=0;
    con.Open();
    status = command.ExecuteNonQuery();

    if(status>0)
    {
        MessageBox.Show("Rows Inserted Successfully!");
    }
    else
    {
        MessageBox.Show("No Rows Inserted!");
    }

    con.Close();
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM