[英]Databind ADO.NET Entity Framework to ListBox
我正在尝试将ADO EF对象类(材料)附加到ListBox,并在将新材料添加到数据库时使其自动更新。
在下面的当前代码中,它将显示在设置控件数据源之前数据库中的所有项目,但不会更新。
我知道我在这里缺少基本知识。 任何帮助是极大的赞赏!
public partial class Main : KryptonForm
{
private AGAEntities db = new AGAEntities();
public Main()
{
InitializeComponent();
}
private void Main_Load(object sender, EventArgs e)
{
matList.DataSource = db.Materials;
matList.DisplayMember = "Name";
}
private void newMat_Click(object sender, EventArgs e)
{
AddMaterial form = new AddMaterial();
form.ShowDialog();
}
}
这是因为db.Materials
在添加项目时不会引发通知。 您应该使用BindingList<T>
作为DataSource
:
private BindingList<Material> _materials;
private void Main_Load(object sender, EventArgs e)
{
_materials = new BindingList<Material>(db.Materials);
matList.DataSource = _materials;
matList.DisplayMember = "Name";
}
private void newMat_Click(object sender, EventArgs e)
{
AddMaterial form = new AddMaterial();
if (form.ShowDialog() == DialogResult.OK)
{
_materials.Add(form.NewMaterial);
}
}
(此代码假定您的AddMaterial
类将新项目添加到数据库中,并通过NewMaterial
属性公开它)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.