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