2014-10-03 45 views
0

我已经动态的FlowLayoutPanel中从SQL表这样如何将数据从动态添加文本框读取到FlowLayoutPanel?

string query = "SELECT* FROM tblA"; 

using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=DummyData;Integrated Security=True")) 
{ 
    conn.Open(); 

    using (SqlCommand cmd = new SqlCommand(query, conn)) 
    { 
     SqlDataReader reader = cmd.ExecuteReader(); 

     while (reader.Read()) 
     { 
      Label objLbl = new Label(); 
      TextBox objText = new TextBox(); 
      objLbl.Text = reader["A_Name"].ToString(); 
      objText.Name = "txt"+reader["ID"].ToString(); 
      pnlFlow.Controls.Add(objLbl); 
      pnlFlow.Controls.Add(objText); 
     } 
    } 
} 

它的正常工作添加文本框。现在我面临的问题是用户在这些文本框中输入一些数据。我如何获得这些数据以进一步处理?

回答

1

有很多方法可以做到这一点,取决于如何以及何时需要获取值。

如果需要同时读取所有这些,是这样的:

foreach(Control c in pnlFlow.Controls) 
{ 
     if c.Name.StartsWith("txt") 
     // process the text box 
     // you might want to use a more distinct naming pattern to be safe 
     ... 
} 

如果您需要分别在不同时间处理它们,你可以通过控件集合名称引用它们

string textBoxName = "txt12345"; 
string valueText = ((TextBox)pnlFlow.Controls[textBoxName]).Text; 

当然,这两个片段都需要更好的错误处理,但我会把它留给你。

相关问题