DataGridView - jak zwiększyć wydajność

0

Mam problem z optymalizacją wydajności aplikacji bazodanowej. Program ma za zadanie wczytać całą tabelę z serwera sql i umieścić w DataGridView. W przypadku kiedy mam 100, czy 200 rekordów to wszystko jest ok. Natomiast jeżeli rekordów jest np 2000 - DGV wypełnia się przez kilka sekund, a każda operacja trwa makabrycznie długo. Pojawia się więc pytanie - czy można ograniczyć liczbę rekordów zawartych w DataGridView tylko do tych, które są wyświetlane? Wiem, że można ograniczyć liczbę rekordów w dataset poprzez założenie limitu na zapytanie, ale chodzi mi o to, żeby w dataset była cała tabela. Czy jest jeszcze może inny sposób optymalizacji wyświetlanych rekordów?

Mam nadzieję, że da się zrozumieć o co mi chodzi :)

0

Mozesz sam wypelniac GridView odpowiednimi danymi. Np. pobierasz sobie te 2000 wierszy i sam wyswietlasz tyle ile sie zmiesci na ekranie. Dodajesz jakos obsluge przewijania i odpowiednio zmieniasz wiersze. Jezeli sie okaze, ze pobieranie 2000 na raz jest zbyt pamieciozerne, to pobierasz kawalkami i tak samo wyswietlasz.

pozdrawiam
johny

0

No właśnie pobrać chciałbym wszystkie rekordy z tabeli, tym bardziej, że wchodzą tam w grę również zależności z inną tabelą. Myślałem, że istnieje może sposób na to, żeby w DataGridzie wczytać tylko część z nich. DGV łączę z DataSet poprzez BindingSource, więc może BS ma większe możliwości pod tym względem. Chociaż pewnie każdy mi powie, że za bardzo kombinuję i że moje myślenie nie jest poprawne programistycznie, ale próbuję wymyśleć coś, żeby nie było trzeba całego programu przerabiać.

0

No, ale ja nie mowie, zebys ich nie pobieral, tylko zebys je pobral osobno, a wyswietlal sam, bez korzystania z mechanizmu BindingSource. I to wyswietlanie przystosowal dokladnie tak jak chcesz.

pozdrawiam
johny

1 użytkowników online, w tym zalogowanych: 0, gości: 1