VB.NET - 在列表中向DataGridView添加列

时间:2012-01-04 17:01:52

标签: vb.net datagridview

我有一个程序,我让用户动态地将DataGridViews添加到界面,这些也被添加到列表中以便于管理。所有DataGridView都有自己的数据源。我正在使用数据绑定源来获取要添加的不同DataGridViewTextBoxColumns。

问题如下: 当用户添加第一个表时,运行以下代码:

dataGridList(dataGridList.Count -1).Clear()
dataGridList(dataGridList.Count -1).Add(NameDataGridViewTextBoxColumn)

没有问题,并且显示了正确的数据,但是当用户添加第二个表时,我会抛出异常:

  

“提供的列已属于数据网格视图”

我认为这很奇怪,因为我访问不同的DataGridView是对的吗?

所有这一切的要点是能够根据用户的选择查看所有DataGridViews中的不同列。

希望你能帮助我。

3 个答案:

答案 0 :(得分:5)

您如何确定NameDataGridViewTextBoxColumn是什么?我的意思是你提到的textBoxColumns列表是如何创建的?

您实际上可能需要创建一个New DataGridViewTextBoxColumn来添加适当的属性集。

您可以在代码中添加如下列的列:

        Dim col As New DataGridViewTextBoxColumn
        col.DataPropertyName = "PropertyName"
        col.HeaderText = "SomeText"
        col.Name = "colWhateverName"
        DataGridView1.Columns.Add(col)

请务必设置相应的属性名称等。您也可以从现有列中复制它......

col.DataPropertyName = NameDataGridViewTextBoxColumn.DataPropertyName

例如。

答案 1 :(得分:0)

如上所述,您需要为每个网格视图添加一个新实例,并将列分配给您可以在回发时执行的新gridview。

答案 2 :(得分:0)

这就是我所做的。我通过我的数据库搜索或表格选择列,然后将两者都网格化为一个DGV。像这样。我刚玩了它,它现在可以正确对齐行。这是一个有点偏离主题,因为它是数据库,但我猜相似的方法将简化从其他来源添加数据。

tempAdt = New OleDbDataAdapter("SELECT firstName FROM Employees",connector)
tableCommand = New OleDbCommandBuilder(tempAdt)

tableAdaptor = New OleDbDataAdapter("SELECT * FROM userTable", connector)
tableCommand = New OleDbCommandBuilder(tableAdaptor)

Dim startTable2 As New DataTable

tempAdt.Fill(startTable2)
tableAdaptor.Fill(startTable2)

主要是我使用了两个不同的适配器,它会在DGV中并排列出它们