DataGridView l'ordre des colonnes n'a pas l'air de fonctionner
J'ai un DataGridView lié à une liste de business objects:
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
Je puis ajouter un indépendant colonne de bouton et de faire partie de l'colonnes liées invisible:
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
Cela semble fonctionner assez bien, sauf peu importe ce que je fais de la colonne de bouton de commande (Modifier) s'affiche toujours dans le milieu de l'autre des colonnes et non à la fin. J'ai essayé les deux DGV.Les colonnes.Ajouter et DGV.Les colonnes.Insérer ainsi que le réglage de la DisplayIndex de la colonne (cela fonctionne pour toutes les autres colonnes) mais je suis incapable de faire le bouton d'affichage de la colonne à l'emplacement correct. J'ai aussi essayé d'ajouter le bouton de la colonne à la fois avant et après le réglage, le reste des colonnes, mais cela ne semble pas faire de différence quelqu'un Peut-il suggérer ce que je fais de mal? C'est me rend fou....
OriginalL'auteur Simon | 2009-03-10
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur votre post en cherchant à résoudre un problème semblable. J'ai finalement suivi vers le bas en faisant comme vous le mentionnez (à l'aide de la
DisplayIndex
de propriété) et le réglage de laAutoGenerateColumns
propriété de laDataGridView
à false. Cette propriété n'est pas visible dans le concepteur, donc j'ai juste ajouté ça à l'constructeur de ma forme. Assurez-vous de le faire avant de définir la source de données pour votre grille.Espère que cela aide...
AutoGenerateColumns = false;
avant de liaison a fait le tour. Merci copain.OriginalL'auteur jheddings
La AutoCreateColumn est le problème. L'article suivant donne un exemple de comment le résoudre.
De DataDridView DisplayOrder Ne Fonctionne Pas
OriginalL'auteur Shawn
Même problème ici, et après avoir cherché pendant un certain temps, j'ai découvert qu'en fixant le DisplayIndexes dans l'ordre Ascendant il a fait pour moi.
C'est contre-intuitif, car c'est un nombre, mais j'ai toujours eu pour les mettre dans l'ordre.
Cela fonctionne:
Alors que ce n'était pas:
OriginalL'auteur icosamuel
J'ai essayé les solutions ci-dessus sans succès. Ensuite, j'ai trouvé cet article: Il fait tout mieux.
http://msdn.microsoft.com/en-us/library/vstudio/wkfe535h(v=vs. 100).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
OriginalL'auteur TheMayneLine