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,
7 yorum
sefa · 26 Haziran 2019 19:55 tarihinde
ben bunu toolboxtan advancedatagridview nesnesini ekleyemiyorum. yardımcı olabilir misiniz?
Remzi Şahinoğlu · 26 Haziran 2019 20:01 tarihinde
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.
sefa · 26 Haziran 2019 20:32 tarihinde
O problemi çözdüm fakat programı çalıştırdığımda filtreleme yapmıyor. neden olabilir.
sefa · 26 Haziran 2019 21:12 tarihinde
tamam problemi çözdüm. Teşekkürler bilgiler için 🙂
Anonim · 16 Ağustos 2019 22:33 tarihinde
yeni pakette filter menu ve search toolbar gibi nesnelerde çıkmış…
Gültekin Örenç · 8 Eylül 2020 13:42 tarihinde
Merhaba Bu filtreleme Listview için de yapabilir miyiz
Remzi Şahinoğlu · 17 Eylül 2020 07:22 tarihinde
merhaba, bu kütüphanenin yok ama list view için başka kütüphaneler yapılmış olabilir, araştırmak lazım.