将列添加到DataGridView(VB.NET)

将列添加到DataGridView(VB.NET),vb.net,datagridview,add,Vb.net,Datagridview,Add,我想在我的项目中添加一个新专栏,但发生了一件奇怪的事情 我的代码 adapter.fill(datatable) dgv.datasource = datatable dgv.columns.add("test","testHeader") 测试列的列索引应该是最后一个索引。 但是,我发现列索引是0,而原来的第0个索引变成了1 我不知道发生了什么事。是否有任何因素会导致此问题? datagridview的属性设置错误 很简单,首先获取总列数,然后在末尾添加列: Dim col as New

我想在我的项目中添加一个新专栏,但发生了一件奇怪的事情

我的代码

adapter.fill(datatable)
dgv.datasource = datatable
dgv.columns.add("test","testHeader")
测试列的列索引应该是最后一个索引。 但是,我发现列索引是0,而原来的第0个索引变成了1

我不知道发生了什么事。是否有任何因素会导致此问题?
datagridview的属性设置错误

很简单,首先获取总列数,然后在末尾添加列:

  Dim col as New DataGridViewColumn
  col.HeaderText = "abc"

  dgv.Columns.Insert(dgv.ColumnCount, col)
如果上述代码没有帮助,请尝试将列添加到
IDataTable
本身:

 datatable.Columns.Add("Header text", GetType(System.String)).SetOrdinal(datatable.Columns.Count)
你的代码

adapter.fill(datatable)
dgv.datasource = datatable
dgv.columns.add("test","testHeader")
似乎工作正常。 我猜您正在填充datagridview,这就是添加的列位于索引0中的原因

尝试添加

dgv.DataSource = Nothing
您将注意到添加的列“test”、“testHeader”将位于索引0中。 再次设置

dgv.datasource = datatable 

将导致添加的列保留在索引0处,而datatable将添加到后续列。

有一个
DataGridViewColumn.DisplayedIndex属性来控制可见列的顺序


请记住,DataGridView跟踪这些值,并为网格中的其他列更新它们。将其中一些更改为0会将所有其他列更新为更高的值。

请尝试此代码以添加列

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

顺便说一下,测试列仍然显示在datagridview的最后一列中。如果我在这个项目中添加另一个新的datagridview并执行相同的操作,结果是相同的。如果我将这个datagridview复制到另一个全新的项目中,一切都会像往常一样好。因此,我认为原始项目中应该有错误,请尝试编辑该问题。将您的评论移至问题正文,并尝试添加更多细节(至少是aspx标记的相关部分)。Othrewise此问题可能已结束。发布的代码不会重复此问题。这是一个基于零的集合。下一个索引将是ColumnCount NOT ColumnCount+1它仍然不起作用。此时我添加了新列,新列的索引很好。但是,在屏幕上显示dgv后,新列的索引将自动更改为0@F.C.Hsiao,重新检查我的答案:)