2012-02-02 121 views
4

我是C#初学者。我想要做的是从SQL数据库中的列中提取数据并将其写入列表框。基本上,我希望我的表的part_num列中的数据能够在列表框中动态显示。如何使用SQL值动态填充列表框

我看到:

this.listParts.Items.AddRange(new object[] {"Part1", "Part2"}); 

但我将如何去从SQL动态生成的值替换“第一部分”和“第2部分”?

public mainForm() 
{ 
    InitializeComponent(); 
    SqlConnection conn = new SqlConnection(
     "Data Source=DBELL;Initial Catalog=part_table;Integrated Security=True"); 
    conn.Open(); 
    DataSet ds = new DataSet(); 
    SqlDataAdapter adapter = new SqlDataAdapter(
     "SELECT part_num from customParts", conn); 
     adapter.Fill(ds); 
    foreach (DataRow row in ds.Tables[0].Rows) 
    { 
     for (int i = 0; i < ds.Tables[0].Columns.Count; i++) 

     this.listParts.Items.AddRange(new object[] {"Part1", "Part2"}); 
    } 
} 

任何帮助表示赞赏!

+1

直接绑定到DataTable。 http://msdn.microsoft.com/en-us/library/w67sdsex.aspx顺便说一句,因为你的SqlConnection实现了IDisposable,你应该看看using语句,并且将你的数据绑定代码移动到它自己的方法中。 http://msdn.microsoft.com/en-us/library/yh598w02%28v=VS.80%29.aspx – Lloyd 2012-02-02 17:27:22

回答

8

为什么不使用DataTableDataSource

public mainForm() 
     { 
      InitializeComponent(); 
      SqlConnection conn = new SqlConnection("Data Source=DBELL;Initial Catalog=part_table;Integrated Security=True"); 
      conn.Open(); 
      DataSet ds = new DataSet(); 
      SqlDataAdapter adapter = new SqlDataAdapter(
      "SELECT part_num from customParts", conn); 
      adapter.Fill(ds); 
      this.listParts.DataSource = ds.Tables[0]; 
      this.listParts.DisplayMember = "part_num"; 
     } 

您应该DataSets读了甚至更好,但EntityFramework和数据绑定。

+0

好吧,这似乎更简单,但是当我部署它,我看到“System.Data.DataRowView”而不是数据库值。我必须将某些东西转换为字符串吗? – 2012-02-02 17:30:51

+2

你不需要。只需指定DisplayMember,例如DisplayMember = “PART_NUM”。 – Mithrandir 2012-02-02 17:32:48

+0

啊,看起来像我不小心切断了部分代码。所有现在工作,真的很感谢帮助! – 2012-02-02 17:38:29