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