Witajcie,
Mam taki problem. Wczytuje sobie tabelę z bazy do DataGridView
dAdapt = new SqlDataAdapter("select * from tabela", cn);
invBuilder = new SqlCommandBuilder(dAdapt);
dAdapt.Fill(myDS, "tabela");
dataGridView1.DataSource = myDS.Tables["qut1"].DefaultView;
tabela elegancko mi się wyświetla. Robię sobie obsługę update, po wciśnięciu przycisku odpala się kod:
dataGridView1.Refresh();
dAdapt.Update(myDS, "tabela");
To też fajnie działa, ale do czasu.
Gdy ktoś zrobi update np. z poziomu bazy i podmieni mi wartość danego wiersza to w aplikacji nic już nie zdziałam. Np. Jest imię "Jan", ktoś zmienia w bazie na "Henryk", ja w aplikacji ustawiam "Marek", daję update i wyskakuje mi komunikat:
Naruszenie współbieżności: element UpdateCommand dotyczy następującej liczby rekordów: 0 (oczekiwana liczba rekordów: 1).
Wydaje mi się, że rozwiązaniem problemu będzie odświeżenie DataGridView, bo znajduje on rozbieżność pomiędzy tym co sam posiada, a tym co jest w bazie w momencie próby zrobienie Update. Może jestem w błędzie? W każdym razie idąc tym tropem trochę pogooglowałem i rozwiązań całe mnóstwo znalazłem, ale żadne nie działa. Wszelkiej maści:
dataGridView1.Invalidate();
dataGridView1.Refresh();
myDS.getChange();
dataGridView1.Parent = null;
suspendLayout();
itp.itd. nic nie dają (oczywiście to tylko przykładowe metody, nie wywoływane w podanej ilości i kolejności).
Może ktoś podpowie co zrobić z opisaną sytuacją? Może DataGridView wcale nie wymaga odświeżenia? (choć docelowo też go będę potrzebował).