Mam małą aplikację WinForms demo. Jednym z formularzy jest formularz Dodaj nową osobę. Użyłem widoku szczegółów zamiast DataGridView
z moich źródeł danych. Po wprowadzeniu danych i kliknięciu przycisku zapisywania w nawigatorze są zerowe zmiany, jednak umieszczam MovePrevious
i MoveNext
po moim AddNew
w postaci Load
, wszystko działa zgodnie z oczekiwaniami.Dlaczego muszę zmienić pozycję źródła wiązania, zanim mogę zapisać zmiany
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);
}
}
Dlaczego muszę przełączać położenie pozycji BindingSource, zanim będzie rozpoznawać zmiany i zapisać?
Nie musisz zmieniać pozycji, w rzeczywistości potrzebujesz 'BindingSource.EndEdit()' –
Myślę, że możesz po prostu wywołać 'EndEdit()'. doh, @RezaAghaei pokonał mnie 5 sekund;) – MickyD
EndEdit działa. Dzięki @RezaAghaei, obaj naprawdę! – Randy