【发布时间】:2014-10-21 00:54:53
【问题描述】:
目前我可以将我的 Excel 工作表导入 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()
【问题讨论】:
-
您需要将行添加到您指定的对象是datagridview的数据源而不是datagridview本身
-
我会看看我是否可以阅读数据源并添加行,但是我现在很困惑。我的数据源只是从 xlsx 文件中导入的。是否可以采用“DataGridView1.Rows.Add”的方式,或者我必须明确地采用另一种方式?如果不是这个,在什么情况下会使用“DataGridView1.Rows.Add”?
-
您必须在某处分配
datagridview1.datasource = ?????。你要它做什么?显示您用于将 Excel 工作表导入网格的代码。DataGridView1.Rows.Add在您的网格未绑定到数据源时使用,因为错误状态 -
因此您需要将行添加到 DataTable
DtSet.Tables(0)而不是网格。新行将自动显示在网格中。 -
我已将我的导入代码添加到主要问题中。看来我的数据源是正在填充来自 excel 表的信息的数据集。是否可以使其不绑定到数据源,所以我只需导入我的数据,然后从那里不再链接。或者类似的东西?
标签: .net vb.net excel datagridview