merhaba;
bu makalede devexpress gridcontrol üzerinde master-detail işleminin nasıl yapıldığını açıklamaya çalışacağım.
yukarıdaki resimdede gördüğünüz gibi master-detail yapısı; birden fazla ilişkili tabloyu bir arada göstermeyi amaçlar.bunu yaparken dataset içerisindeki tablolarda ilişki kurmamız gerekmektedir.aşağıdaki örnekte gridcontrol üzerinde master-detail yapısının ne şekilde kurulabileceği belirtilmiştir.
ilk olarak 2 adet tablo oluşturmalıyız.
1. Tablomuz kullanıcı tablosu. Alanları;
Id (int,auto increment,not null)
KullaniciAdi (string,not null)
Soyadi (string,not null)
2. Tablo IletisimBilgileri Alanlari;
Id (int,auto increment,not null)
KullaniciId (int,not null) -->Kullanıcı tablosunun Id alanı ile ilişkili.Child tablo.
Telefon (string,not null)
Mail(string,not null)
Daha fazla bilgi için : https://documentation.devexpress.com/#windowsforms/DevExpressXtraGridGridControl_ForceInitializetopic
Hepinize Kolay Gelsin
bu makalede devexpress gridcontrol üzerinde master-detail işleminin nasıl yapıldığını açıklamaya çalışacağım.
yukarıdaki resimdede gördüğünüz gibi master-detail yapısı; birden fazla ilişkili tabloyu bir arada göstermeyi amaçlar.bunu yaparken dataset içerisindeki tablolarda ilişki kurmamız gerekmektedir.aşağıdaki örnekte gridcontrol üzerinde master-detail yapısının ne şekilde kurulabileceği belirtilmiştir.
ilk olarak 2 adet tablo oluşturmalıyız.
1. Tablomuz kullanıcı tablosu. Alanları;
Id (int,auto increment,not null)
KullaniciAdi (string,not null)
Soyadi (string,not null)
2. Tablo IletisimBilgileri Alanlari;
Id (int,auto increment,not null)
KullaniciId (int,not null) -->Kullanıcı tablosunun Id alanı ile ilişkili.Child tablo.
Telefon (string,not null)
Mail(string,not null)
//bağlantı için gerekli SqlConnection nesnesi oluşturulur ve bağlantı açılır.
SqlConnection qcon = new SqlConnection("baglantıcumlesi");
qcon.Open();
//SqlDataAdapter nesnesinin yardımıyla her iki tablo da sorgulanarak sonuç dataset'te 2 ayrı tabloya aktarılır.
SqlDataAdapter qadap = new SqlDataAdapter("Select * from Kullanici", qcon);
SqlDataAdapter qIletisimBilgileri = new SqlDataAdapter("Select * from IletisimBilgileri", qcon);
//dataset nesnesi oluşturulur ve DataAdapter nesnelerindeki veriler fill metodu ile DataSet içerisindeki tablolara aktarılır.
DataSet qdataset = new DataSet();
qadap.Fill(qdataset[0]);
qIletisimBilgileri.Fill(qdataset[1]);
//DataSet üzerindeki anahtar ve alt anahtarların tanımı yapılır.
DataColumn AnahtarKolon = qdataset.Tables[0].Columns["Id"];
DataColumn AltAnahtar = qdataset.Tables[1].Columns["Id"];
//DataSet üzerinde yeni bir tablolar arası ilişki tanımlanır ve gridcontrol nesnesinin datasource özelliğine Primary tablo referans gösterilir.
qdataset.Relations.Add("IliskiAdi", AnahtarKolon, AltAnahtar, false);
gridControl1.DataSource = qdataset.Tables[0];
gridControl1.ForceInitialize();
qcon.Close();
ForceInitialize metodu form load olmadan önce grid üzerinde değişiklik yapacaksanız mutlaka kullanmanız gereken bir fonksiyondur.Daha fazla bilgi için : https://documentation.devexpress.com/#windowsforms/DevExpressXtraGridGridControl_ForceInitializetopic
Hepinize Kolay Gelsin

Yorumlar
Yorum Gönder