C# ile DevExpress Nesneleri Kullanımı #GridControl Giriş
Selamlar Arkadaşlar
Devexpress nesneleri kullanımı derslerimize devam edelim. DevExpress'in benim gözümde çağ atlatan nesnelerinden birisi GridContol. Çok geniş kapsamlı mükemmel bir nesne olarak " beni kullanın " diye bağırıyor. Çok geniş kapsamlı olduğu için bu ders biraz uzun olacak bu yüzden parça parça anlatabilirim. Mümkün olduğunca ayrıntıya inmeye ve kolayca anlaşılır şekilde çalışacağım.
Not: Çok ayrıntılı bir bilgim yok bu nesne hakkında bildiğim kadarı ile anlatacağım. En çok kullandığım ve sizlerinde en çok kullanacağınız özelliklerden başlayacağım.
Hadi başlayalım.
İçerik Başlıkları;
1 - Tablo Bağlama
2 - Gruplandırma
3 - Veri Filtreleme
4 - Kolon - Satır - Hücre İşlemleri
5 - Alt Toplamlar & Bilgiler
6 - Kolonların Formatlanması
Projemizde bir form açalım ve bir DevExpress GridControl ekleyelim.
İçeriğe geçmeden önce birkaç özellikten bahsedelim. GridControl nesnesinin diğer devexpress nesnelerinde olduğu gibi kendine has bir özellik ekranı var önce onu bir görelim.
Run Designer diyerek ana tasarım ekranını görelim
Arkadaşlar buraları anlatmayacağım en azından şimdilik. Siz kurcalarsınız. Ben daha çok işleri kod kısmında hallediyorum. :)
İçerik başlıklarından devam edelim.
1 - Tablo Bağlama
Bu makalemde üstün körü anlatmıştım. Şimdi ayrıntılı görelim.
gridControl1.DataSource = null;
// önce DataSource u boşaltıyoruz.
gridView1.Columns.Clear();
// kolonları temizliyoruz
gridControl1.DataSource = sql.ShowTable("sql sorgumuz");
// sql classımızı kullanarak DataSource'e bir DataTable atıyoruz.
Evet arkadaşlar DataSource için bir DataTable gerekiyor.
İlk iki satırın amacı aynı gridde birden farklı tabloyu sorunsuzca gösterebilmek için. Bazen kolonları temizleyemediği için 2. tablonun verilerini göstermiyor. (Tecrübe ile sabit).
2 - Gruplandırma
Bu konu kolay ve basit. Gridview'i doldurduktan sonra (çalışma zamanında) kolon başlığını tutup hemen üzerindeki gruplama alanına taşıdığınızda o kolona göre kayıtlar gruplanıyor. Ama önce yapmamız gereken bir şey var. İsterseniz Dizayn sayfasından isterseniz kodla gruplama alanını açıp kapatabilirsiniz. Dizayn kısmını kullanmadığım için yerini bilmiyorum. Hiçte merak etmedim direk kodunu aradım. Sebebi ise yeri geliyor bir formda 3 4 girdcontrol kullanıyorum. E ne yapacam her grid için dizayn sayfasına girip ayar mı yapıcam? Oldu canımmm. Ya projemde 100 tane grid varsa ne olacak onla mı uğraşacaz işi gücü bırakıp. Eğer siz öyle yapmak isterseniz siz bilirsiniz. Ben size ilgili kodu veriyorum..
this.gridView1.OptionsView.ShowGroupPanel = false;
// false kapatır
// true açar
Elle uğraşmayayım istediğim kolon otomatik gruplu gelsin diyorsanız da;
gridView1.BeginSort();
try
{
gridView1.ClearGrouping();
gridView1.Columns["Gruplanacak_Kolon"].GroupIndex = 0;
}
finally
{
gridView1.EndSort();
}
3 - Veri Filtreleme
Bu konu için de bir ayar açmamız gerekiyor. Kodunu veriyorum hemen
this.gridView3.OptionsView.ShowAutoFilterRow = false;
// false kapatır
// true açar
//bu kod, kayıtların en üste yer alan bir arama satırı açar.
//İlk satır boş görünür ve hangi kolonun altındaki hücreye yazı
//yazarsanız o kolonda yazdıklarınıza eşleşenleri getirir.
this.gridView3.OptionsView.HeaderFilterButtonShowMode = FilterButtonShowMode.Button;
//bu kod ise kolon adlarının yanı bir ok getirir ve bu ok'a tıkladığınızda o kolondaki
//verileri gruplayarak, (2 elma, 2 armut, 5 kavun varsa hepsinden 1 er adet gösterir. )
//gösterir. Tekli ve veya çok seçim yaparak seçili olan verileri içeren kayıtları gösterir.
örn; listede sadece Mustafa BÜKÜLMEZ ile ilgili kayıtları görmek istiyorsunuz, İlgili kolonun arama hücresine;
Mustafa BÜKÜLMEZ yazdığınızda ilgili kayıtları gösterir.
* BÜKÜLMEZ yazdığınızda ikinci kelimesi BÜKÜLMEZ olan kayıtları gösterir.
------
*.08.2016 yazdığınızda 2016 yılının 8. ayındaki kayıtları gösterir.
*.2016 yazdığınızda 2016 yılındaki kayıtları gösterir.
*mavi* yazdığınızda içerisinde mavi kelimesini içeren kayıtları gösterir.
4 - Kolon - Satır - Hücre İşlemleri
Bu konuyu da yine kodlarla yapacağız. İşte Kodlar;
* gridView3.OptionsView.ColumnAutoWidth = false;
//bu kod kolonların başlıklarını yada içlerindeki veriye göre büyür yada küçülür,
//ve kayıtlar ekrana sığmaz ise altında kaydırma çubugu çıkar.
//true olursa tüm kolonları ekrana sığdırmaya çalışır. örn 100 kolon varsa
//karşınıza şöyle bir görüntü gelir.
Tüm kolonları ekrana sığdırmaya çalışır.
* this.gridView3.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap;
//bu kod uzun kolon adlarında kolon adının alt satıra geçmesini sağlar.
* this.gridView3.Columns["KAYITNO"].Visible = false;
//görünmesini istemediğin kolonlar için.
Lakin çalışma zamanında bu kolona ihtiyaç duyarsanız kolon başlıkları üzerinde sağ tık yaparak,
Columns Chooser seçerek görebilirsiniz. Gizli kolonlar listesini sağ altta gösterecektir isterseniz kulağından tutup kolon başlıklarının arasına bırakarak girdview de görünmesini sağlayabilirsiniz. Diğerlerinin de zaten az çok ne olduğu belli siz uğraşırsınız bunlarla yani denersiniz anlamında :)
* gridView3.BestFitColumns();
// kolonlardaki verilerin görüneceği kadar genişletir yada daraltır yani otomatik genişletir yada daraltır.
// hücrelerin düzenlebilir olma özelliğini kapatır yada açar, Açık olduğunda hücreye tıkladığınızda
//hücre içine focuslanır. Grid üzerinden insert yaptırmak isterseniz bu kodu true ayarlamalısınız.
* this.gridView3.OptionsBehavior.ReadOnly = false;
//hücreleri sadece okunabilir olarak ayarlar.
//hücre üzerinde değişiklik yapamazsınız yada yapabilirsiniz..
//Üstteki kodla hemen hemen aynı işi yapar.
* gridView3.MoveFirst();
//grid üzerindeki ilk kayda focuslanır.
* gridView3.MoveLast();
//grid üzerindeki son kayda focuslanır.
* this.gridView1.ColumnPanelRowHeight = 45;
// başlık kısmının yüksekliğini ayarlar.* this.gridView1.OptionsView.ShowFooter = true;
// gridin altında alt toplam alanını gösterir bu alanda sağ tık yaparak diğer seçenekleri görebilirsiniz.
5 - Alt Toplamlar & Bilgiler
for (int i = 0; i < gridView1.Columns.Count; i++)
{
string tipi = this.gridView1.Columns[i].ColumnType.ToString();
// kolondaki verinin tipi alıyoruz.
if (tipi == "System.Double")
{
// eğer tipi double ise
gridView1.Columns[i].DisplayFormat.FormatType = FormatType.Numeric;
// görünüm şeklini numeric yaptık
gridView1.Columns[i].DisplayFormat.FormatString = "n2";
// devexpress in numeric format kodu virgülden sonra 2 basamak
gridView1.Columns[i].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
// alt bilgi yada alt toplam şeklini seçtik
// tipi double olanların kolonlarının altında tüm kolonun toplamını göstersin
// istedik.
gridView1.Columns[i].SummaryItem.DisplayFormat = "{0:N2}";
// alt toplam görünüm şekli virgülden sonra 2 basamak
gridView1.Columns[i].SummaryItem.Tag = 1;
}
}
Şimdi kodu inceleyelim.
Bütün gridview üzerindeki hücre değerlerine tek tek bakacak tipi double olanları (0,00) formatı şeklinde gösterecek yani virgülden sonra 2 basamak şeklinde. Sonra hangi kolonda ise bu double veriler o kolonların altında (footer alanına) alt toplam olarak gösterecek. Amma ve lakin önce footerın gösterilmesini sağlamamız gerek. Önceki madde söylemiştim yine söyliyeyim.
NOT: Tabi bu kodu yazarsanız veriler normalden daha geç gelecektir. Dilerseniz kolon bazlı olarak da bu işlemi yapabilirsiniz.
* this.gridView1.OptionsView.ShowFooter = true;
// gridin altında alt toplam alanını gösterir bu alanda sağ tık yaparak diğer seçenekleri görebilirsiniz.
Örnekteki kod alt toplam alır.
gridView1.Columns[i].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum;
En sonraki " sum " ifadesi bunu sağlar. sum Türkçesi toplama işlemi, diğer işlemler arasında count(kayıt sayısı), AVG(ortalama) , En büyük ve en küçük gibi seçenekler mevcut.
6 - Kolonların Formatlanması
* this.gridView3.Columns["TARİH"].DisplayFormat.FormatString = "DD-MM-YYYY SS:dd";
// TARİH kolonunun görünüş formatını değiştirr. Varsayılan olarak tarih 13.08.2016
//şeklinde görünür yukarıdaki kodu yazarsanız saat ve dakika da görünür.
Bu konunun bir kısmı da önceki maddede gösterilmiştir. ;)
GridControl Eventleri hakkında bir makale daha hazırlayacağım arkadaşlar sıralı olsun diye bu makaleden sonra hemen onu paylaşacağım.
Ama arkadaşlar dediğim gibi sadece kullandığım kısımları yazıp paylaşıyorum. Yani internetten araştırıp kopyala yapıştır yapmıyorum. Anlatmam gereken ama teknik olarak bilmediğim konuları da kaynak göstererek alıyorum. Sonuçta copy/paste ile kaynak göstermeden kendi hazırlamış gibi göstererek içerik oluşturulmaz bu sadece çalmak olur.
Saygılarımla
Mustafa BÜKÜLMEZ
http://mustafabukulmez.com/
eline sağlık çok işime yaradı
YanıtlaSilTeşekkürler. Faydalı olmasına sevindim.
YanıtlaSilEllerinize Sağlık çok iyi oldu teşekkürler.
YanıtlaSilFaydalı olmasına sevindim.
SilValla elinize kolunuza sağlık
YanıtlaSilBu yorum yazar tarafından silindi.
YanıtlaSileyvallah
YanıtlaSilHocam merhaba gridview stok seçmeden adet yada birim fiyatı yazmasın istiyorum ve ikinci satıra geçmesin stok seç uyarısı yapsın istiyorum nasıl yaparız bir kod paylaşır mısınız
YanıtlaSilElinize emeğinize sağlık
YanıtlaSilMerhaba. Benim şöyle bir sorunum var. sql den verilerin sıralaması örnek; id, ay, yıl, isim ve tüm kodlama ekle sil güncelle ler buna göre kodladım ama şimdi tüm verilerim zarar görmeden bu sıralamayı grid üzerinde ay olanı en başa almak istiyorum ve bu grid her açtığımda bu şekilde kalmasını istiyorum. yoksa tüm yapıyı bu sıralamayla değiştirirsem çok fazla zamanımı alacak bunun gridview üzerinde veya kodlama ile istediğimiz sıralamayı yapabilmemiz mümkünmü teşekkürler.
YanıtlaSil