设置数据源时,DatagridviewComboBoxCell值无效

时间:2018-11-03 14:12:37

标签: c# winforms datagridview datasource datagridviewcombobox

起初,我真的很抱歉,我的英语不太流利。请有人帮助我解决此问题,最近两天我正在寻找解决方案。

我上了这样的课

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的数据源。

接下来,我将Category Collection设置为Datagridview的数据源。当我喜欢的时候,Datagridview会抛出this error

当我更改“类别”集合时,“主类别数据源”值中的每个数据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);

这会导致错误。我需要解决方案,请有人帮我解决这个问题

0 个答案:

没有答案