Je suis nouveau au contrôle DataGridView WinForm et n'aime tout simplement pas la liaison de données. J'avais l'habitude d'utiliser Spread OCX il y a 100 ans et je l'ai trouvé amical. Maintenant, je suis en cours d'exécution dans un problème, essayez de faire quelque chose de simple:DataGridViewComboBoxCell dans un contrôle DataGridView WinForm non lié
J'ai une grille avec deux colonnes: 1) Nom 2) Statut
Je veux faire une boucle à travers ma collection de « ChinaVisas » et d'affichage le nom du demandeur et le statut de sa demande. Je veux faire de la colonne de statut une drop drop qui permette à l'utilisateur de changer la valeur en sélectionnant un élément différent dans la liste déroulante.
Voici ce que je fais. J'ai le sentiment que ce ne sont pas les données façon contraignante que la plupart des gens coder, mais ici ya go:
Private Sub PopulateGridVisa()
grdVisa.Rows.Add(_Order.ChinaVisas.Count)
For r As Integer = 0 To _Order.ChinaVisas.Count - 1
Dim CurrentChinaVisa As ChinaVisa = _Order.ChinaVisas(r)
For c As Integer = 0 To grdVisa.Columns.Count - 1
Select Case c
Case 0
Dim CurrentCell As DataGridViewCell = grdVisa.Rows(r).Cells(c)
CurrentCell.Value = CurrentChinaVisa.SortName
Case 1
Dim CurrentCell As DataGridViewComboBoxCell = CType(grdVisa.Rows(r).Cells(c), DataGridViewComboBoxCell)
For Each StatusCode As StatusCode In _frmMain.ApplicationStartup.StatusCodes
If StatusCode.StatusCodeId >= StatusCodeEnum.WaitingToReceive Then
CurrentCell.Items.Add(StatusCode)
End If
If StatusCode.StatusCodeId = CurrentChinaVisa.StatusCodeId Then
CurrentCell.Value = StatusCode
End If
Next
End Select
Next
Next
End Sub
Cela semble fonctionner, mais lorsque l'utilisateur sélectionne une nouvelle valeur d'état dans la liste déroulante , l'erreur suivante est renvoyée:
---------------------------
DataGridView Default Error Dialog
---------------------------
The following exception occurred in the DataGridView:
System.ArgumentException: DataGridViewComboBoxCell value is not valid.
To replace this default dialog please handle the DataError event.
---------------------------
OK
---------------------------
Pourquoi?