【发布时间】:2014-07-06 03:20:42
【问题描述】:
我在 winforms 表单上有一个带有 bindingsource 的绑定导航器。 我的数据源来自实体框架列表。
我想使用从Julie Lerman Course at Pluralsight 学到的技术来跟踪绑定源中每个实体的状态
添加和编辑很简单,我只是填写了添加和删除按钮事件
private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e)
{
((IEntity)(this.personBindingSource.Current)).State = EntityState.Added;
}
private void bindingNavigatorDeleteItem_Click(object sender, EventArgs e)
{
((IEntity)(this.personBindingSource.Current)).State = EntityState.Deleted;
}
但是没有 EditItemClick 事件,我如何跟踪实体是否已被修改?
请注意,我正在绑定到域类 Person 的断开连接列表
List<Person> people = MyRepository.GetPeople();
this.personBindingSource.DataSource =people;
this.personBindingNavigator.BindingSource = this.personBindingSource;
我有一个接口 IENTity
public interface IEntity
{
EntityState State { get; set; }
}
public enum EntityState
{
Unchanged,
Added,
Modified,
Deleted
}
并且 Person 继承自
[更新]
查看 bindingSource 事件属性,我看到 CurrentItemChanged 在修改属性时引发。但是,当当前项目本身发生变化时也会引发它。
有没有办法弄清楚它是出于什么原因提出的?
【问题讨论】:
-
如何将数据值绑定到绑定导航器中的控件?如果您将实体属性绑定到控件,那么只需通过 UI 更改值应该会自动设置
EntityState.Modified。如果您正确绑定,实体跟踪器应该会为您处理。 -
谢谢@DavidTansey 我更新了问题以显示实体已断开连接。
标签: c# winforms entity-framework bindingsource bindingnavigator