将动态添加的文本框中的数据添加到数据库

时间:2014-02-27 11:23:32

标签: c# mysql winforms dynamic-controls

下面是按钮点击动态添加文本框和按钮的代码。我需要在另一个按钮点击时将tat文本框数据添加到数据库。对此一无所知。任何建议都会有所帮助。

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);
    }
}

1 个答案:

答案 0 :(得分:0)

解决方案:您需要先保存动态Name控件的TextBox,然后才能访问它们:

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;

现在访问它们,同时将数据保存到数据库

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();
}