2012-02-02 64 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