【问题标题】:Add data from dynamically added textbox to database将动态添加的文本框中的数据添加到数据库
【发布时间】:2023-04-04 06:04:01
【问题描述】:

以下是在单击按钮时动态添加文本框和按钮的代码。我需要在另一个按钮单击时将 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);
    }
}

【问题讨论】:

  • 您能具体说明一下吗?你有数据库交互等方法吗?
  • 要获取文本框的文本,您可以使用类似的东西。 panel1.Controls["nameOfTextbox"].Text

标签: c# mysql winforms dynamic-controls


【解决方案1】:

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

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

【讨论】:

  • 文本框是动态添加的。如何获取此类文本框的 ID 或名称
  • @Robin:您需要为 Find() 方法提供第二个参数,如 true 检查我编辑的答案
  • 这段代码只添加了一组动态添加到 db.i 的文本框,可以动态添加许多文本框。如何获取所有文本框的值。
猜你喜欢
  • 1970-01-01
  • 2013-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多