Windows Control Library ile Dinamik DataGridView Yapımı

Projelerimizde çoğu kez hazır kontroller kullanırız. Bazen bu kontrolleri geliştirme gereği duyabilirsiniz. Örneğin bir ekonomi projesi geliştiriyorsanız sadece sayı girişi olan TextBox kontrolleri geliştirmeniz gayet yararlı olacaktır. Aksi takdirde her zaman tüm TextBoxlarınıza sayı girilmemesine dair kontrol yazmanız gerekir. Bu çok uğraştırıcı olacaktır.

İşte bu yazımda daha ileri bir örnek yaparak kendi dinamik DatagridView kontrolümüzü oluşturacağız.

Şimdi işe koyulma vakti…

Ben projemde veri kaynağı olarak Sql Server kullanacağım. Sizde hergangi bir veri kaynağı kullanabilirsiniz. Veritanabındaki tabloya ilişkin görüntü aşağıdadır.

windows-control-library-ile-dinamik-datagridview-1

windows-control-library-ile-dinamik-datagridview-1

1.ADIM: Bir adet Windows Forms Control Library (Windows Control Library) projesi açınız.

2.Adım: Dizayn formuna bir adet DataGridView kontrolü ekleyiniz.

3.Adım: Project>Add Class ile projenize bir adet CLASS ekleyiniz. Sınıfın ismi Class1.cs olarak kalsın.

4.Adım: Classınıza aşağıdaki kodu ekleyiniz.

//Bağlantı kapalıysa açar.

private void BaglantiKontrol()
{
if (baglanti.State == ConnectionState.Closed)
{
baglanti.Open();
}
}

//Kitaplar tablosundaki tüm verileri getirir.
SqlConnection baglanti = new SqlConnection(“server=localhost; initial catalog=ZirvedekiBeyinler;integrated security=true”);
SqlCommand komut;
public DataTable KitaplariGetir()
{
komut = new SqlCommand(“Select ad,fiyat from kitaplar”,baglanti);
BaglantiKontrol();
SqlDataReader oku = komut.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(oku);
return dt;
}

//Kitaplar tablosunda kullanıcının gönderdiği parametreyi içeren kitapları getirir.
public DataTable KitaplariGetir(string KitapAdi)
{
komut = new SqlCommand(“Select ad,fiyat from kitaplar where ad like ‘%” + KitapAdi + “%'”, baglanti);
BaglantiKontrol();
SqlDataReader oku = komut.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(oku);
return dt;
}

5.Adım: Control Dizayn ekranınızın LOAD eventine aşağıdaki kodu yazınız.

Class1 yeni = new Class1();
private void UserControl1_Load(object sender, EventArgs e)
{
dataGridView1.DataSource = yeni.KitaplariGetir();
}

Böylece bu kontrolü sürükleyip bıraktığınız anda Default olarak DataGridView’de Kitaplar tablosuna ait tüm kayıtlar gelecek.

Kontrolünüze Özellik(Property) Yazalım

6.Adım: UserControl1.Cs kod satırına bir property ekleyelim.

string ad;
public string AdaGoreFiltre
{
get
{
return ad;
}
set
{
ad=value;
dataGridView1.DataSource = yeni.KitaplariGetir(ad);
}
}

7.Adım Projenizi çalıştırınız.

windows-control-library-ile-dinamik-datagridview-2

windows-control-library-ile-dinamik-datagridview-2

İlk çalıştırdığımız anda görürnen ekrana dikkat ederseniz tüm kayıtlar geldi. Tabii aynı zamanda Misc AdaGoreFiltrele özelliği eklendiğine de dikkat ediniz. Özelliği deneyelim.

windows-control-library-ile-dinamik-datagridview-3

windows-control-library-ile-dinamik-datagridview-3

Özelliğimize c# yazdığımızda dikkat edin sadece c# kitapları geldi…

Yazdığınız Kontrolü Windows Forms Projenizde Kullanmak

8.Adım: Bir adet Windows Forms Projesi açınız.

9.Adım: Daha önce oluşturduğunuz Control Library Projesinin Debug klasörü içerisindeki DLL’i az once oluşturduğunuz Windows Form Projesinin Debug Klasörünün içerisine yapıştırınız.

windows-control-library-ile-dinamik-datagridview-4

windows-control-library-ile-dinamik-datagridview-4

10.Adım: ToolBox üzerinde sağ Tıklayıp Choose Items ve gelen ekrandan Browse diyerek DLL’i projenize ekleyiniz.

windows-control-library-ile-dinamik-datagridview-5

windows-control-library-ile-dinamik-datagridview-5

11.Adım: Artık Kontrolünüz ToolBox da. Sürekleyip bırakarak kullanabilirsiniz. İşte Sonuç.

windows-control-library-ile-dinamik-datagridview-6

windows-control-library-ile-dinamik-datagridview-6

Diğer yazılarımda görüşmek üzere.