2010-10-19 5 views
0

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?

Répondre

0

enter code here Ne pas ajouter l'objet StatusCode à la collection des articles comme indiqué ici:

CurrentCell.Items.Add(StatusCode) 

Ajouter une chaîne et voir si cela fonctionne

CurrentCell.Items.Add (StatusCode.ToString)

Questions connexes