C# – Advanced DataGrid Filtering Nasıl Yapılır
Bu yazımızda Advanced DataGrid Filtering denilen özelliği öğreneceğiz. Bu özellik exceldeki filtre özelliğini datagrid nesnemizde yapmaya yarayacak. Bir önceki yazımızda excel dosyamızdaki verileri datagrid nesnemize import etmeyi öğrenmiştik. (Bkzn: Import Excel to Datagrid)
Aynı kod üzerinden ilerleyeceğiz arkadaşlar. Bir kaç değişiklik yapacağız. İlki Project Menusünde Manage Nuget Pakacge sekmesine girip kullanmak istediğimiz Advanced DataGrid Filtering kütüphanemizi ekleyeceğiz.

Bu paketi eklemek için Browse sekmesine tıklayarak arama kısmına yazarsanız otomatik olarak gelecektir. Install diyerek yükleyin.

Paketimizi yükledikten sonra Toolbox sekmesinden advancedatagridview nesnemizi formunuza ekleyin. Ayrıca bindingsource nesneside eklemeyi unutmayın. Bindingsource nesnemizi datagrid nesnemize aşağıdaki gibi bağlamalısınız. Ayrıca faklı dataset’ ler oluşturarak birbirlerinze bağlayabilirsiniz. Örneğin bir sql veritabanı olabilir. Biz burada excel dosyasını okuyacağız. Aynı şey.

Ayarlamaları yaptıktan sonra gelelim kodumuza. İlk önce Excel dosyamızdaki verimizi okutacağız. Daha sonra bunu datagridview nesnemize yükleyeceğiz. Bu sayede exceldeki verilerimizi datagridview nesnemizde görmüş olacağız. Zaten buraya kadar bir önceki yazımızda yapmıştık. Burada yapmak istediğimiz filtre ve sıralama events (olaylarını) kullanmak. Bunun için advancedagridview nesnemize tıklayın ve “Properties” penceresinden “Events” kısmında “SortStringChanged” ve “FiltreStringChanged” event’ larına çift tıklayarak kod sayfasını açın.

Kod sayfasında aşağıdaki kodları yazın.
// www.kaizen40.com using System; using System.Data; using System.Windows.Forms; using System.Data.OleDb; namespace ImportExcelToDatagrid { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void BtnEkle_Click(object sender, EventArgs e) { OpenFileDialog file = new OpenFileDialog(); //file.Filter = "Excel Dosyası |*.xlsx| Excel Dosyası|*.xls"; file.FilterIndex = 2; file.RestoreDirectory = true; file.CheckFileExists = false; file.Title = "Excel Dosyası Seçiniz.."; file.ShowDialog(); //string DosyaYolu = file.FileName; //string DosyaAdi = file.SafeFileName; TxtAdres.Text = file.FileName; } private void BtnOku_Click(object sender, EventArgs e) { string constr = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + TxtAdres.Text + "; Extended Properties =\"Excel 8.0; HDR = Yes;\";"; OleDbConnection con = new OleDbConnection(constr); OleDbCommand oconn = new OleDbCommand("Select * From [" + TxtSayfa.Text + "$]", con); con.Open(); OleDbDataAdapter sda = new OleDbDataAdapter(oconn); DataTable data = new DataTable(); sda.Fill(data); advancedDataGridView1.DataSource = data; bindingSource1.DataSource = data; con.Close(); } private void advancedDataGridView1_SortStringChanged_1(object sender, EventArgs e) { bindingSource1.Sort = advancedDataGridView1.SortString; } private void advancedDataGridView1_FilterStringChanged_1(object sender, EventArgs e) { bindingSource1.Filter = advancedDataGridView1.FilterString; } } }
Kodunuzu çalıştırın ve excel dosyanızı seçin. Excel dosyanızda verilerinizin bulunduğu sayfayı ikinci textbox’ a yazın ve “OKU” butonuna basın. Verilerinizin geldiğini görün. Başlıkaların yanındaki aşağı ok simgesine basarak filtreleme ve sıralama peneresi açılacaktır.

Bu pencereden istediğiniz filtrelemeyi ve sıralamayı yapabilirsiniz arkadaşlar. Umarım işinize yaramıştır. İyi çalışmalar,

ben bunu toolboxtan advancedatagridview nesnesini ekleyemiyorum. yardımcı olabilir misiniz?
Merhaba, ilk önce yukarıda bahsettiğim gibi “Manage Nuget Package” kısmından AGDV kütüphanesini eklemelisiniz. Bu sayede toolbox’ ta gözükecekir.
O problemi çözdüm fakat programı çalıştırdığımda filtreleme yapmıyor. neden olabilir.
tamam problemi çözdüm. Teşekkürler bilgiler için 🙂
yeni pakette filter menu ve search toolbar gibi nesnelerde çıkmış…
Merhaba Bu filtreleme Listview için de yapabilir miyiz
merhaba, bu kütüphanenin yok ama list view için başka kütüphaneler yapılmış olabilir, araştırmak lazım.