У меня есть DataGridView, связанный со списком бизнес-объектов:
Dim template As New IncidentTemplate
Dim temps As List(Of IncidentTemplate) = template.LoadAll
Dim bs As New BindingSource
If Not temps Is Nothing Then
bs.DataSource = temps
Me.dgvTemplates.DataSource = bs
End If
Затем я добавляю столбец несвязанных кнопок и делаю некоторые из связанных столбцов невидимыми:
Dim BtnCol As New DataGridViewButtonColumn
With BtnCol
.Name = "Edit"
.Text = "Edit"
.HeaderText = String.Empty
.ToolTipText = "Edit this Template"
.UseColumnTextForButtonValue = True
End With
.Columns.Add(BtnCol)
BtnCol = Nothing
For Each col As DataGridViewColumn In Me.dgvTemplates.Columns
Select Case col.Name
Case "Name"
col.DisplayIndex = 0
col.FillWeight = 100
col.Visible = True
Case "Description"
col.DisplayIndex = 1
col.FillWeight = 100
col.Visible = True
Case "Created"
col.DisplayIndex = 3
col.HeaderText = "Created On"
col.DefaultCellStyle.Format = "d"
col.FillWeight = 75
col.Visible = True
Case "CreatedBy"
col.DisplayIndex = 2
col.HeaderText = "Created By"
col.FillWeight = 75
col.Visible = True
Case "Edit"
col.DisplayIndex = 4
col.HeaderText = ""
col.FillWeight = 30
col.Visible = True
Case Else
col.Visible = False
End Select
Next
Кажется, это работает достаточно хорошо, за исключением того, что я делаю, столбец кнопки (Изменить) всегда отображается в середине других столбцов, а не в конце. Я пробовал как DGV.Columns.Add, так и DGV.Columns.Insert, а также установить DisplayIndex для столбца (это работает для всех остальных столбцов), но я не могу отобразить столбец кнопки в правильном месте. Я также попытался добавить столбец кнопки как до, так и после установки остальных столбцов, но, похоже, это не имеет значения. Кто-нибудь может подсказать, что я делаю неправильно? Это сводит меня с ума ....