none
c# Ado.Net ile filtreleme nasıl yapabilirim? RRS feed

  • Soru

  • Öncelikle merhaba 

    datagridview üzerine verilerimi çekiyorum bunları güncelliyorum siliyorum yenisini ekliyorum ama bir de textbox ile filtrleme yapmak istiyorum internete baktığım zaman datatable ile  yapılıyor ama  ben grid'e verilerimi zaten çekiyorum datatable ile dğeil benim gride verileri çektiğim kod şöyle 

     public List<Account> GetAll()
            {
                ConnectionControl();
                SqlCommand command = new SqlCommand("Select * From Tbl_kayitlar",_connection);
                SqlDataReader reader = command.ExecuteReader();

                List<Account> accounts = new List<Account>();
                while(reader.Read())
                {
                    Account account = new Account
                    {
                        ID = Convert.ToInt32(reader["ID"]),
                        Kullaniciadi = reader["Kullaniciadi"].ToString(),
                        Sifre = reader["Sifre"].ToString(),
                        Neyeait = reader["Neyeait"].ToString()
                    };
                    accounts.Add(account);
                }
                reader.Close();
                _connection.Close();
                return accounts;
            }

    e tabi hazırda grid'e çektiğim veriler varken aynısını datatabkle ile çektiğim zaman grid'de veriler bozuk çıkmaya başlıyor mesela kendi kodum ile verileri çekip datatable ile filtreleme yapmayı denedim yine grid'deki veriler bozuk çıkıyor filtreleme işini yapabiliceğim başka bir kaynak var mı?

    Database Sql Server-Ado.net

    6 Mayıs 2022 Cuma 17:30

Tüm Yanıtlar

  • Yani bazi seyleri pek dogru yapmiyorsunuz gibi geldi ve "bozuk cikmak" ne demek anlamis degilim. Convert gereksiz, sifre duz string olarak saklanmaz, DataTable kullansaydiniz DataView ile filter, sort ... hazirdi ve saire ve saire. Ve madem bu sekilde kullanacaksiniz, Dapper'a goz atin mutlaka.  Neyse, sizinki gibi dusunursek bir ornek:

    static readonly string connectionString = @"server=.\SQL2017;Database=Northwind;Trusted_Connection=yes;";
    List<Customer> customers;
    void Main()
    {
    	using (var db = new DataContext(connectionString))
    	{
    		customers = db
    			.ExecuteQuery<Customer>("Select * from Customers")
    			.ToList();
    	}
    
    	Form f = new Form {  Width = 600 };
    
    	SplitContainer sc = new SplitContainer { Dock = DockStyle.Fill };
    	DataGridView dgv = new DataGridView { Dock = DockStyle.Fill};
    	sc.Panel2.Controls.Add(dgv);
    
    	TextBox txtFilter = new TextBox { Top = 10, Left = 10 };
    	Button btnFilter = new Button
    	{
    		Text = "[Filter]",
    		AutoSize = true,
    		Top = 50
    	};
    
    	sc.Panel1.Controls.AddRange(new Control[] { txtFilter, btnFilter });
    	f.Controls.Add(sc);
    
    
    	dgv.DataSource = customers;
    
    	btnFilter.Click += (sender, args) =>
    	{
    		
    		dgv.DataSource = null;
    		dgv.DataSource = customers.Where(c => c.CompanyName.ToLower().Contains(txtFilter.Text.ToLower())).ToList();
    
    	};
    	f.Show();
    }
    
    public class Customer
    {
    	public string CustomerID { get; set; }
    	public string ContactName { get; set; }
    	public string CompanyName { get; set; }
    	public string ContactTitle { get; set; }
    	public string Country { get; set; }
    }
    



    Blog
    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.


    Not: Temelin geri zekali arkadasi Idris bu mesaja da atlayip ne kadar aptal oldugunu bir kez daha belgeleyebilir. Kendisinin tek marifeti beni takip edip, neden her soruya cevap verdigimi, yardim etmeye calistigimi sorgulamaktir. Bu beyinsiz zavalliya, aptal oldugunu hatirlatmayi unutmayiniz.

    6 Mayıs 2022 Cuma 17:59