Odświeżanie zawartości kontrolek w Windows Form

Wszystko o bazach danych

Moderator: xxSlayeRxx

Odświeżanie zawartości kontrolek w Windows Form

Sponsor

Sponsor
 

Odświeżanie zawartości kontrolek w Windows Form

Postprzez z6yszko » Cz sty 12, 2012 8:06 am

Witam.
Widzę że zaczynam pierwszy wątek w tym temacie, więc na dobry początek mam następujący problem.
Stworzyłem projekt w Visual Studio 2010 EE. Utworzyłem standardową formę do przeglądania/edycji tabeli bazy danych zawierającą kilka pól tekstowych i innych kontrolek oraz grid z dołączonym BindingNavigator. Nawigacja grida powoduje wypełnianie kontrolek zawartością bieżącego rekordu, edycja grida jest zablokowana, słowem: standard. I teraz tak: gdy edytuję czy dodaję nowy rekord, po naciśnięciu przycisku Zapisz przed zapisaniem danych do tabeli muszę wykonać polecenie SQL zmieniające zawartość innych rekordów niż bieżący. Realizuję to przy pomocy SqlCommand() i wszystko poprawnie zapisuje się do bazy danych. Jednak dane w buforze grida nie zmieniają się, więc podczas dalszej nawigacji w formatce pokazują się stare dane, a nie te zmienione. Jeżeli zamknę formę i uruchomię ponownie, wtedy zawartość danych odświeża się i wszystko wygląda poprawnie.
Moje pytanie: jak odświeżyć zawartość danych w formatce po zapisaniu rekordu? Wpadłem na pomysł, żeby wykonać ponownie InitializeComponent(), ale niestety w formatce pojawia się drugi BindingNawigator. Podpowiedzcie której metody, od którego komponentu używa się standardowo do ponownego wypełnienia formatki danymi z tabeli?
W formatce są następujące komponenty związane z zawartością tabeli bazy danych:
DataSet, BindingSource, TableAdapter, tableAdapterManager, BindingNavigator. Komponenty te pojawiają się w formie automatycznie przy przeciąganiu pól z dataset.
Nie wdaję się w dalsze wyjaśnienia, bo myślę, że ktoś, kto zajmuje się aplikacjami bazodanowymi doskonale zna ten problem, jeśli jednak potrzebne jest doprecyzowanie, to opiszę dokładnie wraz z fragmentami kodu.
Z góry dziękuję za pomoc.
z6yszko
New member
 
Posty: 4
Dołączył(a): Śr sty 11, 2012 11:02 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Postprzez Marcin Miga » Cz sty 12, 2012 9:06 am

Gdzieś pewnie w Form_Load masz coś, co wywołuje .Fill(...)
jesli masz, to po prostu wywołaj to jeszcze raz.

pozdrawiaMM
Marcin Miga
Member
 
Posty: 215
Dołączył(a): Pn maja 17, 2010 2:35 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Postprzez z6yszko » Cz sty 12, 2012 9:39 am

Właśnie nie mogę znaleźć tego Fill. Trochę już przy tym problemie posiedziałem, szukałem również na zagranicznych serwerach, ale ogólnie mało jest dobrych tutoriali związanych z aplikacjami bazodanowymi.
z6yszko
New member
 
Posty: 4
Dołączył(a): Śr sty 11, 2012 11:02 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Postprzez Marcin Miga » Cz sty 12, 2012 10:11 am

A co masz w Form_load?
Marcin Miga
Member
 
Posty: 215
Dołączył(a): Pn maja 17, 2010 2:35 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Postprzez z6yszko » Cz sty 12, 2012 10:18 am

Nie widzę obiektu Form_load. Gdzie powinien być?
Jeśli chcę użyć ActiveForm.Load() to wyrzuca mi błąd:

The event 'System.Windows.Forms.Form.Load' can only appear on the left hand side of += or -
z6yszko
New member
 
Posty: 4
Dołączył(a): Śr sty 11, 2012 11:02 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Postprzez Marcin Miga » Cz sty 12, 2012 11:18 am

Form_Load to nie obiekt, a procedura (obsługa zdarzenia), więc będzie w kodzie...
Najlepiej kliknąć na formę w Designie, przejść do okienka properties, przełączyć się na widok zdarzeń, poszukać Load i zobaczyć, co jest tam wpisane. Jeśli jest, to kliknąć tam dwa razy - od razu przeniesie do danej procedury.

pozdrawiaMM
Marcin Miga
Member
 
Posty: 215
Dołączył(a): Pn maja 17, 2010 2:35 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Postprzez z6yszko » Cz sty 12, 2012 11:53 am

Wszystko się zgadza, nie mogłem znaleźć, bo oczywiście zamiast Form_ mam własną nazwę. Wcześniej udało mi się przy pomocy metody Fill:
this.myFormTableAdapter.Fill(this.myDataSet.myTable);

ale ponieważ dokładnie to samo jest w procedurze myForm_Load, więc zgodnie z metodyką należy stosować tę procedurę. Dzięki wielkie za podpowiedź, wszystko pięknie działa.

Przy okazji jeszcze jedno pytanie związane z tym tematem. Podczas pracy sieciowej może się zdarzyć, że kilku użytkowników w tym samym czasie otworzy tę samą formatkę i zacznie ją edytować. W jaki sposób powinno się dokonywać odświeżania danych, żeby uniknąć konfliktów? Czy wywoływać procedurę myForm_Load przed rozpoczynaniem edycji?
z6yszko
New member
 
Posty: 4
Dołączył(a): Śr sty 11, 2012 11:02 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Postprzez Marcin Miga » Cz sty 12, 2012 1:21 pm

Nie Form_Load, tylko .Fill wywołujesz przed edycja danych...

pozdrawiaMM
Marcin Miga
Member
 
Posty: 215
Dołączył(a): Pn maja 17, 2010 2:35 pm

Re: Odświeżanie zawartości kontrolek w Windows Form

Sponsors

Sponsor
 


Powrót do Bazy danych

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości

cron