目前我可以将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()
答案 0 :(得分:1)
我尝试了Matt Wilko发布的另一种方法但是我无法掌握如何使用它。所以我在微软库上查了一下,发现了一些完美无缺的东西。
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)
答案 1 :(得分:0)
将DataSource分配给DataGridView后,无法直接向DataGridView添加行,必须将它们添加到DataSource。
在您的情况下,您需要向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