GridView Filtreleme İşlemi(DataTable Select)


Datatable ımıza select sorgusu atarak yeni bir datatable olusturup daha sonra da bu datatable ı gridimize datasource olarak veriyoruz.Burada önbemli nokta ilk datatable ımızı clone() işlemıne tabi tutmak olacaktır.Boylelıkle column ismi vermeye gerek kalmaz ve gridin rowlarındakı verılerı alır.

Asagıdakı örnek te ,bir textbox a girilen kelimeye gore gridin herhangi bir kolonuna gore fıltreleme ıslemı yapılmaktadır.
protected void btn_Filter_Click(object sender, EventArgs e) {
            try {
                DataTable newDt = new DataTable();
                DataTable datatable = (DataTable)ViewState["GridProducts"];
   //Ben viewstate te tutmustum datatable ı.Siz su sekılde de datatable ınızı cekebilrsiniz.
  //Datatable datatable=(Datatable)gridView1.DataSource;
                if (datatable != null && datatable.Rows.Count != 0) {
                    if (!string.IsNullOrEmpty(txt_FiltrelenecekText.Text)) {
                        datatable.CaseSensitive = false;
                        string selectQuery = "Product_Name like '" + txt_FiltrelenecekText.Text + "%'";
                        DataRow[] results = datatable.Select(selectQuery);
                        if (results != null && results.Length != 0) {
                            newDt = datatable.Clone();
                          
                            //datatable.Clear();
                            foreach (DataRow row in results) {
                                newDt.ImportRow(row);
                                
                            }
                            grid_Product.DataSource = newDt;
                            grid_Product.DataBind();
                            grid_Product.Visible = true;
                        }
                        else {
                            EkranaMesajYaz("Product is not found in list.","ScreenMessage");
                        }
                    }
                    else {
                        EkranaMesajYaz("Filter text is empty.", "ScreenMessage");
                    }
                }
                else {
                    EkranaMesajYaz("Product List is null", "ScreenMessage");
                }
            }
            catch (Exception ex) {
                EkranaMesajYaz(ex.Message, "ScreenMessage");
            }
        }

Hiç yorum yok:

Yorum Gönder