2010-12-09 67 views
1

我想将DataGridViewComboBox绑定到列表几个小时。Datagridview组合框数据绑定“值无效”

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

从我的本地Oracle测试数据库我获取一些数据。一切正常,但组合框。我希望组合框在db选择的值中显示 - 有时 - 并让用户通过组合框更改值。

我有一个叫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; } 
    } 
} 

我填补这一方法中DtoPersons列表:

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'加载所有数据,我绑定组合框到列表:

(_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"; 

现在每次我选择一个值,或者应该有一个预先选定的值,上面的我显示错误。我该如何解决这个问题?

我真的需要帮助这里...

回答

0

同时,我发现我的错误:

的OracleXE送我的价值为Decimal,一种我从未听说过/梦想......现在通过更改Id-属性为

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

一切正常。

这是一个可怜的数据表不显示它们继承的类型...