فیلتر کردن DataGridView بدون تغییر در منبع داده

ابتدا دیتابیس Northwind را دانلود کرده و آن را حالت زیپ خارج کرده و در درایو C کپی کنید :
filter-datagridview-without-changing-the-data-source-csharp-01
سپس یک دیتاگریدویو و یک TextBox به فرم اضافه کرده و مراحل زیر را برای اضافه ارتباط با بانک طی کنید:

filter-datagridview-without-changing-the-data-source-csharp-02

filter-datagridview-without-changing-the-data-source-csharp-03

filter-datagridview-without-changing-the-data-source-csharp-04

filter-datagridview-without-changing-the-data-source-csharp-06

filter-datagridview-without-changing-the-data-source-csharp-07
برای به دست آوردن رشته اتصال با بانک هم ابتدا به صورت زیر بانک را انتخاب کرده و سپس مقدار موجود در خاصیت Connetcyion String را کپی کنید :
filter-datagridview-without-changing-the-data-source-csharp-08

در مرحله بعد بر روی فرم دوبار کلیک کرده و کدهای زیر را در رویداد Load آن بنویسید :

private void Form1_Load(object sender, EventArgs e)
{
    using (SqlConnection SqlConnection1 = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\NORTHWND.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True"))
    {
        SqlConnection1.Open();             
        using (SqlDataAdapter SqlDataAdapter1 = new SqlDataAdapter("SELECT * FROM Employees", SqlConnection1))
        {
            DataTable DataTable1 = new DataTable();
            SqlDataAdapter1.Fill(DataTable1);
            dataGridView1.DataSource = DataTable1;
        }
    }
}  

سپس بر روی TextBox دو بار کلیک کرده و در رویداد TextChanged آن کد زیر را بنویسید:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    (dataGridView1.DataSource as DataTable).DefaultView.RowFilter = string.Format("LastName = '{0}'", textBox1.Text); 
} 

در کد بالا فرض بر این است که می خواهیم دیتاگرید را بر اساس مقادیر ستون LastName فیلتر کنیم. برنامه را اجرا کرده و نتیجه را مشاهده نمایید :
filter-datagridview-without-changing-the-data-source-csharp-09