为什么我需要更改绑定源位置才能SaveChanges [英] Why do I need to change the Binding Source Position before I can SaveChanges
问题描述
MovePrevious
和 MoveNext
在 AddNew
之后, Load
,一切都按预期工作。 public partial class AddPersonForm:Form
{
private readonly DemoContext _context;
public AddPersonForm()
{
_context = new DemoContext();
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
_context.People.Load();
personBindingSource.DataSource = _context.People.Local.ToBindingList();
personBindingSource.AddNew();
personBindingSource.MovePrevious();
personBindingSource.MoveNext();
base.OnLoad(e);
}
private void personBindingNavigatorSaveItem_Click(object sender,EventArgs e)
{
int changes = _context.SaveChanges();
Debug.WriteLine(#of changes:+ changes);
}
}
为什么我需要在之前切换BindingSource位置会识别更改并保存?
您不需要更改职位,实际上您需要调用 BindingSource .EndEdit
将其应用到基础数据源的更改。
更改职位会导致底层货币管理员调用 EndCurrentEdit
,这就是 EndEdit
绑定源的方法为您而设。
I have a small demo WinForms app. One of the Forms is my Add New Person form. I used the Details View instead of the DataGridView
from my Data Sources. When I enter data and click the save button on the Navigator there are zero changes, However I put a MovePrevious
and a MoveNext
after my AddNew
in the form Load
, everything works as expected.
public partial class AddPersonForm : Form
{
private readonly DemoContext _context;
public AddPersonForm()
{
_context = new DemoContext();
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
_context.People.Load();
personBindingSource.DataSource = _context.People.Local.ToBindingList();
personBindingSource.AddNew();
personBindingSource.MovePrevious();
personBindingSource.MoveNext();
base.OnLoad(e);
}
private void personBindingNavigatorSaveItem_Click(object sender, EventArgs e)
{
int changes = _context.SaveChanges();
Debug.WriteLine("# of changes: " + changes);
}
}
Why do I need to toggle the BindingSource Position before it will recognize changes and save?
You don't need to change the position, in fact you need to call BindingSource.EndEdit
that applies pending changes to the underlying data source.
Changing the position causes the underlying currency manager calls EndCurrentEdit
and this is what the EndEdit
method of binding source does for you.
这篇关于为什么我需要更改绑定源位置才能SaveChanges的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!