Значение DatagridviewComboBoxCell недопустимо, если задан источник данных - PullRequest
0 голосов
/ 03 ноября 2018

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

У меня есть что-то вроде этого

public class MasterCategory
{
    public virtual long Id { set; get; }
    public virtual string Code { set; get; }
    public virtual string Name { set; get; }
    public virtual string Comments { set; get; }
    public MasterCategory Self { get { return this; } }
}

public class Category
{
    public virtual long Id { set; get; }
    public virtual MasterCategory MasterCategoryID { set; get; }
    public virtual string Code { set; get; }
    public virtual string Name { set; get; }
    public virtual string Comments { set; get; }
}

Используя Fluent Nhibernate, я заполняю данные в пользовательский класс BaseCollection для обоих классов, затем устанавливаю коллекцию основных категорий в качестве источника данных для DatagridviewComboBoxColumn.

Далее я устанавливаю коллекцию категорий в качестве источника данных для Datagridview. Когда мне это нравится, Datagridview выдает эту ошибку .

Когда я изменяю коллекцию категорий, каждое значение свойства MastercategoryID данных, в которое входит значение источника данных основной категории, работает нормально. Но то, что находится в свойстве MastercategoryID, поступает из базы данных через NHibernate.

Я сравнил значения источника данных DatagridviewComboBox и значение свойства MastercategoryID. Там нет разницы

MasterCategoryCollection m = new MasterCategoryCollection();
m.Select("where CompanyInfoID.Id = " + ((CompanyInfo)GlobalValues.Company).Id);

CategoryCollection c = new CategoryCollection();
c.Select("where MasterCategoryID.CompanyInfoID.Id = " + ((CompanyInfo)GlobalValues.Company).Id);

CategoryCollection ccc = new CategoryCollection();
int ind = 0;

foreach (Category cd in c)
{      
   ccc.Add(cd);
   ind++;
}

var col = new DataGridViewComboBoxColumn
{
   DataSource = m,
   HeaderText = "Insurance Type",
   DataPropertyName = "MasterCategoryID",
   DisplayMember = "Name",
   ValueMember = "Self",
};

grid.Columns.Add(col);
grid.DataSource = ccc;

panel1.Controls.Add(grid);

Это вызывает ошибку. Мне нужно решение, пожалуйста, кто-нибудь, помогите мне через это

...