2014-08-27 54 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

相关问题