Witam,

Potrzebowałem wyświetlić i umożliwić edycję danych z dwóch tabel połączonych kluczem obcym w DataGridView. Napisałem sobie SELECT'a z INNER JOINEM, procedury składowane do update / insert / delete dla danych (sprawdziłem ręcznie - działają prawidłowo). Podpiąłem te procedury do Update/Insert/DeleteCommand w SqlDataAdapterze. Podpiąłem SqlDataTable pod BindingSource, a BindingSource do DataGridView. W tym momencie pojawia się problem. Jeżeli zmienię wartość w komórce to zmiana nie jest odzwierciedlana w bazie danych. Odzwierciedlana jest dopiero po kolejnej zmianie wartości. Wygląda to mniej więcej tak:

  • w komórce mam wartość "dana1", zmieniam na "dana2" - w bazie dalej mam "dana1", na datagridview wyświetla się "dana2"
  • zmieniam "dana2" na "dana3" - w bazie teraz mam "dana2", a na datagridview "dana3"
    Update SqlDataAdaptera robię w evencie EndEdit. Sprawdzałem też Event CellLeave i CellValidated - taki sam skutek.
    Wygląda na to, że Update wykonuje się na zmianach o jeden krok wstecz ? Trzeba to jakoś programowo Commitować ?
    W tej samej appce, z tą samą bazą mam też datagridview oparty na jednej tabeli gdzie skorzystałem sobie z SqlCommandBuildera i wszystko działa cacy.
    Proszę o pomoc jeżeli ktoś widział kiedyś podobny objaw.

Pozdrawiam