İlginizi Çekebilir
  1. Ana Sayfa
  2. C Sharp

C# DevExpress GridControl Kodla Özelleştirme

C# DevExpress GridControl Kodla Özelleştirme
+ - 4

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. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)

Yorumlar (4)

  1. 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.

  2. 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.

  3. Ö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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.