2014-02-27 134 views
0

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

要获得文本框的文本,你可以使用这样的东西。 'panel1.Controls [“nameOfTextbox”]。Text' – Patrick

回答

0

解决方案:您需要保存的动态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(); 
} 
+0

textposws are dynamic added。我怎样才能得到这样的文本框的ID或名称 – Robin

+0

@Robin:亲爱的plese看到我编辑的答案。 –

+0

获取错误,因为方法'find'没有超载 – Robin

相关问题