2014-08-27 101 views
1

目前我能夠將我的Excel表導入到DataGridView中。 但是,當我嘗試基於不同的變量爲該行的每一列添加一個全新的行時,它並不喜歡它。用每個單元格的變量填充datagridview行

我希望用

DataGridView1.Rows.Add(New String() {txt_id.Text, txt_name.Text, txt_modelnumber}) 

但是我收到一個錯誤說 「附加信息:行不能被編程方式添加到DataGridView的行集合時,該控件是數據綁定的。」

如何讓它不是數據綁定?還是有另一種方式來填充細胞?

我的導入代碼:

Dim MyConnection As System.Data.OleDb.OleDbConnection 
    Dim DtSet As System.Data.DataSet 
    Dim MyCommand As System.Data.OleDb.OleDbDataAdapter 
    MyConnection = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='C:\Users\Lenovo\Downloads\Test\exported.xls';Extended Properties=Excel 8.0;") 
    MyCommand = New System.Data.OleDb.OleDbDataAdapter("select * from [Products$]", MyConnection) 
    MyCommand.TableMappings.Add("Table", "Net-informations.com") 
    DtSet = New System.Data.DataSet 
    MyCommand.Fill(DtSet) 
    DataGridView1.DataSource = DtSet.Tables(0) 
    MyConnection.Close() 
+0

您需要將行添加到您指定的對象是在DataGridView的數據源未在DataGridView本身 – 2014-08-27 12:32:44

+0

我會看看我是否能在datasourcesand添加行但是我讀了當時相當困惑。 我的數據源剛剛從xlsx文件導入。 是否有可能做「DataGridView1.Rows.Add」的方式,或者我必須做的是明確的另一種方式? 也在什麼情況下會使用「DataGridView1.Rows.Add」如果不是這樣? – Crystalwolf 2014-08-27 12:36:10

+0

您必須在某處指定'datagridview1.datasource = ?????'。你把它分配給了什麼?顯示您用於將Excel工作表導入網格的代碼。 'DataGridView1.Rows.Add'用於當你的網格沒有綁定到數據源,因爲錯誤狀態 – 2014-08-27 12:46:01

回答

0

一旦你指定一個DataSource到一個DataGridView,你不能行添加到DataGridView直接,你必須將它們添加到數據源。

你的情況,你需要將行添加到DataTable dtSet.Tables(0)

參見:how to add new rows into a datatable vb.net

你唯一的選擇就是在DataTable中手動添加的所有行的網格是這樣的:

For each dr As DataRow In dtSet.Tables(0).Rows 
    DataGridView1.Rows.Add(New String() {dr.Item(0).ToString, etc}) 
Loop 
+0

我嘗試了第一個選項,但是我得到的唯一結果是它完全清空導入的datagridview,並替換爲我設置的行。我現在嘗試第二種方法。 – Crystalwolf 2014-08-27 13:05:47

0

我嘗試了馬特威爾科發佈的另一種方法,但是我無法掌握如何使用它。所以我在微軟庫上查找了它,並發現了一些完美的工作。

Dim table As DataTable = DtSet.Tables(0) 
    Dim newRow As DataRow = table.NewRow() 
    newRow("Product ID") = lastproductid + 1 
    newRow("Name") = txt_name.Text 
    table.Rows.Add(newRow) 

http://msdn.microsoft.com/en-us/library/system.data.datatable.rows(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

+0

這使用我在我的答案中鏈接到的方法。 – 2014-08-27 13:30:29

相關問題