Ho una piccola app demo di WinForms. Uno dei moduli è il mio modulo Aggiungi nuova persona. Ho usato la vista dettagli invece del DataGridView
dalle mie origini dati. Quando inserisco i dati e faccio clic sul pulsante di salvataggio sul Navigatore, non ci sono cambiamenti, tuttavia inserisco uno MovePrevious
e uno MoveNext
dopo il mio AddNew
nel formato Load
, tutto funziona come previsto.Perché è necessario modificare la posizione della sorgente di rilegatura prima di poter salvare le modifiche
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);
}
}
Perché devo per alternare la posizione BindingSource prima che possa riconoscere i cambiamenti e salvare?
Non è necessario cambiare posizione, infatti è necessario 'BindingSource.EndEdit()' –
Penso che si possa semplicemente chiamare 'EndEdit()'. doh, @RezaAghaei mi ha battuto di 5 secondi;) – MickyD
EndEdit funziona. Grazie a @RezaAghaei, a tutti e due davvero! – Randy