使用为每个单元格设置的变量填充datagridview行

时间:2014-08-27 12:24:58

标签: .net vb.net excel datagridview

目前我可以将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()

2 个答案:

答案 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)

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

答案 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