Datagridview ComboBox Привязка данных "Значение недопустимо" - PullRequest
1 голос
/ 09 декабря 2010

Я пытаюсь привязать DataGridViewComboBox к списку в течение нескольких часов.

Но

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

Из моей локальной базы данных теста оракула я получаю некоторые данные.Все отлично работает, но в выпадающем списке.Я хочу, чтобы в комбинированном ящике отображалось - иногда - в выбранном значении в дБ и позволяла пользователю изменять это значение через комбинированный список.

У меня есть класс с именем 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);
            }
        }
    }

«После загрузки всех данных, я привязываю ComboBox к списку:

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

Теперь каждый раз, когда я выбираю значениеили должно быть предварительно выбранное значение, отображается вышеупомянутая ошибка.Как я могу решить это?

Мне действительно нужна помощь здесь ...

1 Ответ

0 голосов
/ 09 декабря 2010

Тем временем я нашел свою ошибку:

OracleXE отправляет мое значение как Decimal, тип, о котором я никогда не слышал / не мечтал ... ... теперь, изменив свойство Id на

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

все работает просто отлично.

Жаль, что DataTables не показывают, какие типы они наследуют ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...