2014-03-30 194 views
0

我已經使用了DataRow,它可以顯示在我的WinForm的組合框中,但不知何故,它不起作用,儘管整個表格已成功顯示在gridview中。DataRow沒有顯示出來

private void Form1_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(); 
     SqlCommand cmd = new SqlCommand(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     DataTable dt = new DataTable(); 
     DataSet ds = new DataSet(); 

     con.ConnectionString = "Data Source=.;Initial Catalog=StudentDetails;Integrated Security=True"; 
     cmd.Connection = con; 
     cmd.CommandText = "select * from StuDet"; 
     da.SelectCommand = cmd; 
     da.Fill(ds); 

     dt = ds.Tables[0]; 
     dataGridView1.DataSource = dt; 

     DataRow dr = dt.NewRow(); 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      comboBox1.Items.Add(dr[0]); 
     } 
    } 

回答

0

剛纔想出答案,請看看在底部的循環。

private void Form1_Load(object sender, EventArgs e) 
    { 
     SqlConnection con = new SqlConnection(); 
     SqlCommand cmd = new SqlCommand(); 
     SqlDataAdapter da = new SqlDataAdapter(); 
     DataTable dt = new DataTable(); 
     DataSet ds = new DataSet(); 

     con.ConnectionString = "Data Source=.;Initial Catalog=StudentDetails;Integrated Security=True"; 
     cmd.Connection = con; 
     cmd.CommandText = "select * from studet"; 
     da.SelectCommand = cmd; 
     da.Fill(ds); 

     dt = ds.Tables[0]; 
     dataGridView1.DataSource = dt; 
//////////////////////////////////////////////////// 

     DataRow dr = dt.NewRow(); 
     for (int i = 0; i < dt.Rows.Count; i++) 
     { 
      dr[0] = dt.Rows[i][0]; 
      comboBox1.Items.Add(dr[0]); 
     } 
    } 
2

您創建一個新的空行

DataRow dr = dt.NewRow(); 

Rows.Count次將其添加到comboBox1。我想你想要的是通過每行中dt.Rows

foreach (DataRow dr in dt.Rows) 
{ 
    comboBox1.Items.Add(dr["Roll"]); 
} 
+0

我可以使用「for循環」而不是foreach嗎? – androidrill

+0

a)是的,你可以,但你需要在你的循環中獲得該行'DataRow dr = dt.Rows [i]'b)'foreach'有什麼問題? – dkozl

+0

我是一名學生,這就是爲什麼我要嘗試各種各樣的事情。我本來可以簡單地在DataTable上工作並獲得了組合框,但我仍然選擇使用DataRow來學習一些概念。如果你發現我的答案有用,請給我投票。 – androidrill