我有一个BindingList,我想用于DataGrid视图上的数据源 我将dataGridView1和按钮1添加到表单中。 当我按下按钮时,dataGridView上没有任何内容。如果我使用DataTable作为数据源,它可以正常工作。我必须遗漏一些简单的东西。
public partial class Form1 : Form
{
BindingList<ClassificationInfo> boundList;
ClassificationInfo item;
private void button1_Click(object sender, EventArgs e)
{
boundList = new BindingList<ClassificationInfo>();
item = new ClassificationInfo();
item.bExclude = 1;
item.iColor = 123456;
item.szDescription = "Test line 1";
boundList.Add(item);
item = new ClassificationInfo();
item.bExclude = 0;
item.iColor = 7890123;
item.szDescription = "Test line 2";
item.iOrder = 2;
boundList.Add(item);
dataGridView1.DataSource = boundList;
}
public class ClassificationInfo
{
public int iColor;
public int iOrder;
public string szDescription;
public int bExclude;
}
}
答案 0 :(得分:4)
将ClassificationInfo上的公共字段转换为属性。
public class ClassificationInfo
{
public int iColor { get; set; }
public int iOrder { get; set; }
public string szDescription { get; set; }
public int bExclude { get; set; }
}
几乎每种情况下的DataBinding都依赖于TypeDescriptor,它使用PropertyDescriptors来发现属性。字段被忽略(因为它们应该是 - 它们应该被封装),因此您的数据绑定不起作用。