C# DevExpress GridControl Kodla Özelleştirme , yazımız ile c sharp eğitimlerimize devam ediyoruz. Bu dersimiz yine bir devexpress nesnesi olan GridControl ve Gridview üzerine olacak. Aslında bu iki nesne tektir yani GridView, GridControl içerisinde yer alır. DevExpress ‘in ne olduğunu bilmeyenler C# DevExpress GridView Grup Başlık Renklendirme başlıklı yazımın girişinde kısaca değinmiştim, oradan bakabilirler. Giriş kısmını fazla uzatmadan gelin C# DevExpress GridControl Kodla Özelleştirme işlemini görelim.
C# DevExpress GridControl Kodla Özelleştirme
Normalde DevExpress GridView ‘i özelleştirmek istediğimizde grid’in kendine has olan dizayn penceresini kullanırız. Ancak bu işlem her grid için tek tek yapmamızı gerektirir. Projeninde yüzlerce grid olabileceğini hesap edersek kaybedeceğiniz süre saatler olacaktır. Bu sebeple, en genel işlemlerin kod karşılığını bulup bir metod hazırladım. Tabi ki bu grid’in dizayn sayfasında yer alam tüm işlemlerin kod karşılığı da vardır yani kod yazarak ta yapabilirsiniz.
Elbette bu hazırladığım metodu her seferinde tekrar yazmıyoruz. Visual Studio sağolsun tasarım ekranındaki toolbox gibi kod kısmına da toolbox koymuş. Yazdığınız kodları buraya sürükledikten sonra forma nesne ekler gibi kodları tek seferde ekleyebiliyorsunuz. Benim yaptığım işlem de bu şekildedir.
C# DevExpress GridControl Ayar Kodları
Normal şartlarda verilerimizi gridde göstermek için şu kodlar yeterlidir.
gridControl1.DataSource = datatable;
Bu datatable’deki tablolar değişken ise, yani verilerin geldiği tablo vs değişiyorsa.. Grid bunu kendi ayarlayamıyor ve sapıtıyor. Diyelim ki personel listesini gösterdiğiniz gridde bir işlemden sonra personel detaylarını da aynı gridde gösteriyorsanız, kolonlar personel bilgileri, veriler personel detayları olarak görünüyor. (Sapıtmaktan kastım da buydu.) Bunun önüne geçebilmek için şu kodları ekliyoruz.
NOT: her yeni kodu üzerine ekleyerek yazacağım ve sonunda metotta tamamlanmış olacak.
gridControl1.DataSource = null; // girddde gösterilecek verileri içeren datatable gridView1.Columns.Clear(); // gridviewswki kolonları temizler. gridControl1.DataSource = datatable;
Grid ayarları ile ilgili olarak işimize en çok yarayan ayarları veriyorum. Açıklamaları da kodlar arasındadır.
gridControl1.DataSource = null; // girddde gösterilecek verileri içeren datatable gridView1.Columns.Clear(); // gridviewswki kolonları temizler. gridControl1.DataSource = datatable; this.gridControl1.TabIndex = 0; this.gridView1.OptionsBehavior.AllowIncrementalSearch = true; // grid üzerinde arama yapabilme özelliği this.gridView1.OptionsView.ShowAutoFilterRow = true; // 0. satıra bir arama satırı getirir this.gridView1.OptionsView.ShowGroupPanel = false; // kolon başlıklarının üzerinde bir gruplama alanı açar this.gridView1.OptionsView.ShowFooter = true; // alt toplam gibi bilgileri gösterilebilmesi için en alta bir alan açar this.gridView1.OptionsBehavior.Editable = false;// gridview hücre focuslanmasını iptal eder. //Gird üzerinden ekle güncelle işlemi yapacaksanız bunu açarsınız. this.gridView1.OptionsView.ColumnAutoWidth = false; //kolonları sağa doğru kolon başlığı yada hücre verisine göre //genişletir. true olursa tüm kolonları ekrana sığdırmaya çalışır ve saçma bir görüntü çıkar. // çok kolonlu gridlerde mantıksız bir seçimdir. this.gridView1.OptionsView.HeaderFilterButtonShowMode = FilterButtonShowMode.Button; //kolon başlıklında filtreleme alanı açar. this.gridView1.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; //çok uzun başlıklarda alt satıra geçer. this.gridView1.ColumnPanelRowHeight = 45; //gridview header yüksekliği
Burada en önemlileri
this.gridView1.OptionsView.ShowAutoFilterRow = true; // 0. satıra bir arama satırı getirir
Gridview’in en üstüne yani ilk satıra bir arama satırı getirir. Bu arama işlemi kolon içerisinde arama yapabilir.
this.gridView1.OptionsView.ShowGroupPanel = false; // kolon başlıklarının üzerinde bir gruplama alanı açar
GridView’in üst kısmında kolon başlıklarına göre gruplama yapabilmek için bir alan açar. Nasıl göründüğüne C# DevExpress GridView Grup Başlık Renklendirme bu yazımdan bakabilirsiniz. Birden fazla gruplama yapabilirsiniz.
this.gridView1.OptionsView.ShowFooter = true; // alt toplam gibi bilgileri gösterilebilmesi için en alta bir lan açar
GridView’in alt kısmında kolonların toplamları, kayıt sayıları, ortalamaları gibi alt toplam alabileceğiniz bir alan açar. Kolon altına gelen kısımda sağ tık yaptığınızda alabileceğiniz alt toplamları görebilirsiniz.
this.gridView1.OptionsBehavior.Editable = false;// gridview hücre focuslanmasını iptal eder. //Gird üzerinden ekle güncelle işlemi yapacaksanız bunu açarsınız.
GridView’de özellikle kapatmazsanız bir hücreye tıkladığınızda, o hücre focuslanır. Yani hücre içerisindeki yazıyı değiştirebilirsiniz. Tabi bu gerçek veriyi değiştirmez. Sadece gird üzerinde görünen veriyi değiştirir. Bu özellik true olduğunda RowClick gibi eventleri çalıştırabilirmek için satırın en başında yer alan, hangi satırda olduğunu gösteren ve küçük bir ok simgesi çıkan küçük bir alana tıklamanız gerekir. Aksi takdirde, tıkladığınızda hücreye focuslanacağından bu eventler çalışmayacaktır. Grid üzerinden insert, update gibi işlemler için kullanılır.
this.gridView1.OptionsView.ColumnAutoWidth = false; //kolonları sağa doğru kolon başlığı yada hücre verisine göre //genişletir. true olursa tüm kolonları ekrana sığdırmaya çalışır.
Bu özellik açıklamasında da yazdığı gibi otomatik kolon genişliği ayarlar. Bu özelliği true yaptığınızda grid genişlik / kolon sayısı yaparak çıkan boyut kadar her kolonun genişliğini ayarlar. Diyelim ki 100 kolon var o zaman kolonlar hiçbir veriyi göremeyeceğiniz kadar daraltılmış olacaktır.
C# DevExpress GridControl Alt Toplam Kodları
Şimdi de kod ile otomatik alp toplam nasıl alırız o kodlara bakalım.
gridControl1.DataSource = null; // girddde gösterilecek verileri içeren datatable gridView1.Columns.Clear(); // gridviewswki kolonları temizler. gridControl1.DataSource = datatable; this.gridControl1.TabIndex = 0; this.gridView1.OptionsBehavior.AllowIncrementalSearch = true; // arama yapabilme özelliği this.gridView1.OptionsView.ShowAutoFilterRow = true; // 0. satıra bir arama satırı getirir this.gridView1.OptionsView.ShowGroupPanel = false; // kolon başlıklarının üzerinde bir gruplama alanı açar this.gridView1.OptionsView.ShowFooter = true; // alt toplam gibi bilgileri gösterilebilmesi için en alta bir lan açar this.gridView1.OptionsBehavior.Editable = false;// gridview hücre focuslanmasını iptal eder. //Gird üzerinden ekle güncelle işlemi yapacaksanız bunu açarsınız. this.gridView1.OptionsView.ColumnAutoWidth = false; //kolonları sağa doğru kolon başlığı yada hücre verisine göre //genişletir. true olursa tüm kolonları ekrana sığdırmaya çalışır. this.gridView1.OptionsView.HeaderFilterButtonShowMode = FilterButtonShowMode.Button; //kolon başlıklında filtreleme alanı açar. this.gridView1.Appearance.HeaderPanel.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; //çok uzun başlıklarda alt satıra geçer. this.gridView1.ColumnPanelRowHeight = 45; //gridview header yüksekliği gridView1.Columns["RECNO"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Count; gridView1.Columns["RECNO"].SummaryItem.DisplayFormat = "{0:N2}"; gridView1.Columns["RECNO"].SummaryItem.Tag = 1; // bu 3 satır gridin ve RECNO kolonun en altına kayıt adedini gösterir. gridView1.Columns["TUTAR"].SummaryItem.SummaryType = DevExpress.Data.SummaryItemType.Sum; gridView1.Columns["TUTAR"].SummaryItem.DisplayFormat = "{0:N2}"; gridView1.Columns["TUTAR"].SummaryItem.Tag = 1; // bu 3 satır gridin ve TUTAR kolonun en altına kayıtların toplamını gösterir.
Eklenen son 10 satıra bakın. İşte bu kodlar alt toplam aldıran kodlarımızdır.
SummaryType ile alınacak olan alt toplamın ne olacağına karar verebilirsiniz, Topla, Ortalama, Adet, Max, Min gibi…
Son olarak birkaç şey daha vereyim ve dersi bitireyim. Bunlar çok önemli değil ancak duruma göre işimize yarıyorlar.
gridView1.MoveLast(); // en alttaki kayda gider gridView1.MoveFirst(); // en üstteki kayda gider gridView1.BestFitColumns();// kolonları en uygun şekilde genişletir.
Bahsettiğim işlemler ise bunlardır.
C# DevExpress GridControl Kodla Özelleştirme , dersimizde bu kadar dostlar. Diğer derslerimizde görüşmek üzere.
C Sharp Eğitim Seti ve ERP Programlama eğitimi sayfasına gitmek için tıklayınız. Buraya tıklayarak Github Projeme ulaşabilirsiniz.
Sağlıcakla ve takipte kalın.
Merhaba
c# grid nesnesinde aynı hücre içinde
resim altına metin ekleme işlemi nasıl yapılır.
şimdiden teşekkürler.
Burada DevExpress’e sorulmuş bir soru var. Yardımcı olabilir.
https://www.devexpress.com/Support/Center/Question/Details/Q248986/display-image-and-text-in-cell
Merhaba dinamik olarak kolonları nasıl true false yapabilirim. Kullanıcının yetkisi varsa görsün yoksa göremesin senaryoyu oluşturamadım. Rica etsem bir fikir verebilirmisiniz. Teşekkürler.
Öncelikle, kullanıcılar için Grid kolon başlıkları yetkisi tablosu gerekir.
Bu tablo ya kullanıcı için aktif olmasını istediğiniz kolon başlıklarını yazarsınız.
Sonrasında, Grid’i doldurduğunuz kodların altında bu tablodaki verileri okur for döngüsü ile kolonları gizle göster yapabilirsiniz.
gridView1.Columns[“RECNO”].Visible = False;
şeklinde yapabilirsiniz.