ich eine Datagridview auf eine Liste von Geschäftsobjekten gebunden haben zu arbeiten:Datagridview-Spaltenreihenfolge scheint nicht
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
ich dann ein ungebundenes Schaltfläche Spalte hinzufügen und unsichtbar einige der gebundenen Spalten machen:
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
Das scheint ziemlich gut zu funktionieren, außer was ich mache, die Knopfspalte (Edit) wird immer in der Mitte der anderen Spalten statt am Ende angezeigt. Ich habe sowohl DGV.Columns.Add und DGV.Columns.Insert versucht, als auch den DisplayIndex der Spalte (dies funktioniert für alle anderen Spalten), aber ich bin nicht in der Lage, die Button-Spalte an der richtigen Stelle anzuzeigen. Ich habe auch versucht, die Knopfspalte vor und nach dem Setzen der restlichen Spalten hinzuzufügen, aber das scheint keinen Unterschied zu machen Kann jemand vorschlagen, was ich falsch mache? Es macht mich verrückt ...
Für mich ich die Designer wurde mit Spalten hinzufügen (etwas abgebildet, andere nicht), und noch war ich Spalten immer aus Auftrag. Die Einstellung 'AutoGenerateColumns = false;' vor der Bindung hat den Trick gemacht. Danke Kumpel. –