2013-04-05 113 views
0

我想從數據庫中拉出一組數據,並將其推入到datagridview。問題是,當我這樣做時,我得到「system.data.datarow」,並且它只將它添加到第一列(我有5)。這是我的代碼。添加datarow到datagridview只添加到第一列

SqlCommand sqlCom = new SqlCommand("some SQL query string", "SQL database connection info"); 
SqlDataAdapter adapter = new SqlDataAdapter(sqlComm); 
DataTable table = new Datatable(); 

if (methodType = "SELECT") 
{ 
    sqlConn.Open(); 
    adapter.fill(table); 
    foreach (DataRow row in table.Rows) 
    { 
     dgvCrsLookupResults.Rows.Add(row[0]); 
     dgvCrsLookupResults.Rows.Add(row[1]); 
     dgvCrsLookupResults.Rows.Add(row[2]); 
     dgvCrsLookupResults.Rows.Add(row[3]); 
     dgvCrsLookupResults.Rows.Add(row[4]); 
    } 
} 

顯然,這只是填補了第一列,但我想不出我的生命是如何將它添加到每一列代替。當我使用

dgvCrsLookupResults.Columns.Add(row[0]); 

它只是說它有無效的參數。我知道我該死,但我對這一切都很陌生,所以我完全失去了如何做出最後一次跳躍。思考?

+0

什麼是你正在嘗試添加該行的數據類型..你需要做的也許一些鑄造。 。?很難說你的結構是基於那麼一點代碼的。 – MethodMan 2013-04-05 20:36:57

+0

我已經更新了代碼來顯示所有相關的東西。這有幫助嗎? – Kulahan 2013-04-05 20:45:14

+1

而不是試圖做基於索引的行嘗試像這樣 'dgvCrsLookupResults.Rows.Add(row [「COLUMN_NAME」]。ToString());''用實際列名替換COLUMN_NAME' ..不要依賴索引使用實際名稱 – MethodMan 2013-04-05 20:48:40

回答

1

而是循環使用foreach(DataRow row in table.Rows)的:

dgvCrsLookupResults.DataSource = table; 

記住設置:

dgvCrsLookupResults.AutoGenerateColumns = True; 

還是以設計師爲你的DataGridView創建一個列。

在列設置DataPropertyName =的ColumnName在DataTable

在這種情況下 - >dgvCrsLookupResults.AutoGenerateColumns = False;

+0

Welp,工作!非常感激。 – Kulahan 2013-04-05 21:00:06