piątek, 5 września 2014

C# - Bindowanie danych do DataGridView

Witajcie
Dzisiaj króciutko pokażemy sobie jak bindować dane do kontrolki DataGridView.
Więc do dzieła.

Tworzymy nowy projekt WinFormsowy i dodajemy jeden button i kontrolkę
DataGridView z sekcji Data paska ToolBar.


Całość powinna wyglądać mniej więcej tak.

Teraz utworzymy klasę Person w której zdefiniujemy kilka właściwości określające
cechy osoby.
PPM klikamy na projekt i dodajemy  klasę, którą nazywamy Person.
W klasie definiujemy trzy właściwości:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataGridView_Test
{
    public class Person
    {
        public int ID { get; set; }
        public string Imie { get; set; }
        public string Nazwisko { get; set; }
    }
}

Jak widzimy kodu bardzo mało - i generalnie o to nam chodzi.

Teraz dodajemy jeszcze jedną klasę, w której stworzymy listę osób oraz jedną
metodę. Klasę nazwiemy przykładowo "BindingClass".

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataGridView_Test
{
    public class BindingClass
    {
        //lista osób
        private List person = new List
        {   new Person { ID = 1, Imie = "Wilie", Nazwisko = "Coyote"},
            new Person { ID = 2, Imie = "Road", Nazwisko = "Runner"},
            new Person { ID = 3, Imie = "Marysia", Nazwisko = "Sierotka"}
        };

        /// 
        /// Metoda zwraca listę osób z kolekcji person
        /// 
        /// 
        public List ListaDanych()
        {
            List list = new List();
            foreach (var osoba in person)
            {
                list.Add(osoba);
            }
            return list; 
        }
    }
}
Teraz pozostaje nam tylko zbindować dane z kontrolką DataGridView.

Przechodzimy do zdarzenia buttona i tutaj napiszemy 3 linijki kodu, które nam załatwią
bindowanie danych.

private void button1_Click(object sender, EventArgs e)
        {
            BindingClass dane = new BindingClass();


            BindingList bindingLista = new BindingList(dane.ListaDanych());

            dataGridView1.DataSource = bindingLista;
        }

Najpierw tworzymy obiekt "dane" klasy BindingClass, następnie tworzymy binding-listę
i jako argument przekazujemy metodę ListaDanych klasy Bindingdata, która nam zwraca
kolekcję osób. Teraz zostało tylko do kontrolki DataGridView przypisać nasze dane
i to wszystko :).
Tym samym sposobem oddzieliliśmy warstwę interfejsu użytkownika od danych.
Całość wygląda mniej więcej tak:


Zachęcam do własnych testów.
I to było by na tyle w dzisiejszym wpisie. Powodzenia.