Przedstawione rozwiązanie dotyczy problemu związanego z kontrolką WindowsForms – dataGridView. Wiązanie danych z baz SQL-owych (Binding data) do kontrolki dataGridView przy dużej ilości rekordów powoduje spore opóźnienie.

Data dodania: 2011-09-30

Wyświetleń: 1651

Przedrukowań: 0

Głosy dodatnie: 0

Głosy ujemne: 0

WIEDZA

0 Ocena

Licencja: Creative Commons

Podczas ładowania danych dochodzące do nawet kilkudziesięciu sekund oraz duże spowolnienie działania samej kontrolki np. brak płynności podczas przewijania tabeli z danymi.Przedstawione rozwiązanie dotyczy problemu związanego z kontrolką WindowsForms – dataGridView.

Rozwiązaniem tego problemu jest dodanie podwójnego buforowania danych.

W tym celu należy dodać nową statyczną klasę do swojej aplikacji, którą nazywamy np. DoubleBuffer edGridView().

Klasa przedstawia się następująco:

using System;

using System.Text;

using System.Reflection;

using System.Windows.Forms;

namespace DziennikKancelaryjny // Wpisujemy swoją przestrzeń nazw

{

    public static class DoubleBufferedGridView

    {

        public static void DoubleBuffered(this DataGridView datagridview, bool set)

        {

            Type datagridviewType = datagridview.GetType();

            PropertyInfo propertyinf = datagridviewType.GetProperty("DoubleBuffered",

            BindingFlags.Instance | BindingFlags.NonPublic);

            propertyinf.SetValue(datagridview, set, null);

        }

    }

}

Następnie dodajemy nasze buforowanie dla docelowego dataGriedView tak, aby wywoływało się podczas uruchamiania aplikacji:

dataGridView1.DoubleBuffered(true);

To wszystko :) Od teraz możesz się cieszyć szybkim ładowanie swojej kontrolki w około 1 sekundę ;)

Rozwiązanie jest banalne, a o ile ułatwia życie.

Licencja: Creative Commons
0 Ocena