Tôi có một ứng dụng WinForms demo nhỏ. Một trong các Biểu mẫu là biểu mẫu Thêm Người Mới của tôi. Tôi đã sử dụng Chế độ xem chi tiết thay vì số DataGridView
từ Nguồn dữ liệu của tôi. Khi tôi nhập dữ liệu và nhấp vào nút lưu trên Bộ điều hướng có 0 thay đổi, Tuy nhiên tôi đặt MovePrevious
và MoveNext
sau AddNew
của tôi ở dạng Load
, mọi thứ hoạt động như mong đợi.Tại sao tôi cần phải thay đổi Vị trí Nguồn ràng buộc trước khi tôi có thể Lưu các thay đổi
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);
}
}
Tại sao tôi cần phải chuyển vị trí BindingSource trước khi nhận dạng thay đổi và lưu?
Bạn không cần phải thay đổi vị trí, trên thực tế bạn cần 'BindingSource.EndEdit()' –
Tôi nghĩ bạn chỉ có thể gọi 'EndEdit() '. doh, @RezaAghaei đánh tôi sau 5 giây;) – MickyD
EndEdit hoạt động. Cảm ơn @RezaAghaei, cho cả hai bạn thực sự! – Randy