2010-03-01 7 views
2

Le combobox affiche un champ vide par défaut, même si la zone de liste déroulante est remplie avec un certain nombre de valeursParamètre Valeur par défaut à un DataGridViewComboBoxCell

ColumnSpeed.DataSource = speedList; 
ColumnSpeed.ValueType = typeof(string); 

J'ai aussi essayé ce qui suit, mais il affiche toujours le texte vide.

foreach (DataGridViewRow row in myDataGridView.Rows) 
{ 
    DataGridViewComboBoxCell cell = row.Cells[ColumnSpeed.Index] as DataGridViewComboBoxCell; 
    if (cell != null) 
    { 
     cell.DataSource = speedList; 
     cell.Value = cell.Items[0].ToString(); 
    } 
} 
+1

Salut, j'ai essayé de jouer avec DataGridView et ça marche pour moi dans les deux sens. Pouvez-vous fournir plus de code? – Ikaso

Répondre

0

Il se peut que le membre ValueMember que vous avez affecté à votre DataGridView soit différent du DisplayMember que vous avez affecté. Si c'est le cas, vous obtiendrez une valeur vide, et vous obtiendrez un tir DataGridError.

Vous devriez essayer:

foreach (DataGridViewRow row in dgMain.Rows){ 
DataGridViewComboBoxCell pkgBoxCell = row.Cells[ColumnSpeed.Index] 

pkgBoxCell.Value = ((Package) pkgBoxCell.Items(0)).Id 

}

Je convertis que de vb.net, donc il ne peut pas compiler. À la place de la ligne où je définis la valeur, faites les étapes nécessaires pour extraire et définir la valeur ValueMember correcte. Dans mon exemple, je lance l'élément à un type spécifique et utilise son identifiant.

0

Je crois que le code que vous avez écrit devrait fonctionner. Je veux juste savoir où vous appelez la même chose. Cela devrait fonctionner si vous l'appelez dans l'événement databinding_complete de la grille

0

Une fois que vous avez défini toutes les sources de données, essayez d'appeler la méthode DataGridView.Refresh(). Cela est généralement requis pour afficher les modifications apportées aux sources de données.

Questions connexes