2010-12-09 4 views
1

J'essaye de lier un DataGridViewComboBox à une liste pendant des heures maintenant.Datagridview ComboBox Liaison de données "La valeur n'est pas valide"

Mais

"Value is not valid"-Error-Dialog is everything I get :(

De mon oracle-base de données de test local, je suis aller chercher des données. Tout fonctionne bien mais la combobox. Je veux que le combobox montre le - parfois - dans la valeur choisie de DB et laisse l'utilisateur changer la valeur par l'intermédiaire de la liste déroulante.

J'ai une classe appelée DtoPerson:

internal class DtoPerson 
{ 
    private String _name; 
    private Int32 _personRollenId; 

    public String Name 
    { 
     get { return _name; } 
     set { _name = value; } 
    } 

    public Int32 PersonRollenId 
    { 
     get { return _personRollenId; } 
     set { _personRollenId = value; } 
    } 
} 

Je remplissais une liste de DtoPersons au sein de cette méthode:

private void CreateList() 
    { 
     DataRow[] treiberRows = _personTable.Select("ROLLE = '2'", "PERSONNAME ASC", DataViewRowState.CurrentRows); 
     _aufbauerListe = new List<DtoPerson>(); 

     if (treiberRows != null && treiberRows.Length > 0) 
     { 
      foreach (DataRow row in treiberRows) 
      { 
       DtoPerson person = new DtoPerson(); 

       //Füllen der Felder 
       person.Name = row["PERSONNAME"].ToString(); 
       int persoId; 
       Int32.TryParse(row["PERSROLLID"].ToString(), out persoId); 
       person.PersonRollenIdInt = (persoId > 0) ? persoId : -1; 

       _aufbauerListe.Add(person); 
      } 
     } 
    } 

'After' chargement de toutes les données, je suis liant les ComboBox à la Liste:

(_dgvDb.Columns["AUFBAUER"] as DataGridViewComboBoxColumn).DataSource = DaPerson.Instance.AufbauerListe; 
(_dgvDb.Columns["AUFBAUER"] as DataGridViewComboBoxColumn).DisplayMember = "Name"; 
(_dgvDb.Columns["AUFBAUER"] as DataGridViewComboBoxColumn).ValueMember = "PersonRollenId"; 
(_dgvDb.Columns["AUFBAUER"] as DataGridViewComboBoxColumn).DataPropertyName = "AUFBAUERID"; 

Maintenant, chaque fois que je choisis une valeur, ou il devrait y avoir une valeur prédéfinie, au-dessus de moi erreur mentionnée est affichée. Comment puis-je resoudre ceci?

J'ai vraiment besoin d'aide ici ...

Répondre

0

Pendant ce temps, je trouve mon erreur:

Le OracleXE envoyer ma valeur en tant Decimal, un type que je ne ai jamais entendu/rêvé ... ... maintenant en modifiant la propriété Id à

public Decimal PersonRollenId 
{ 
    get { return _personRollenId; } 
    set { _personRollenId = value; } 
} 

tout fonctionne très bien.

Il est dommage que DataTables ne montre pas quel type de types ils héritent ...

Questions connexes