Aslında işlem gridview e datasource olarak verilen datatable ın degısmesıdir.
Ilk bas daha onceden gridview e atanan source u Session da saklamıstık.Şimdi butona tıklamakla Session daki datatable ı yeni bir datatable a atarız.Daha sonra bu datatable ı Clone larız.Foreach dongusu ıcınde filtrelenecek sutuna göre arama yaparız.Eger filtrelenecek text le row daki kolonun degerı aynıysa o degeri yeni datatable ımıza eklerız.ve o datatable ı gridview immize datasource olarak veirriz.Boylece filtrelemis oluruz.Eger eski gridview i tekrar geri getirmek istiyorsak ilk bas Session da bulunan datatable gridview imize datasource olarak vermemiz yetecektir.
btn_Filter adlı butonun tıklanmasıyla calsacak kod blogu.
protected void btn_Filter_Click(object sender, EventArgs e)
{
if (grid_Product != null && grid_Product.Rows.Count != 0)
{
DataTable dtable = new DataTable();
DataTable currentDTable = (DataTable)Session["GridProducts"];
if (txt_FiltrelenecekText.Text != string.Empty)
{
if (currentDTable != null && currentDTable.Rows.Count != 0)
{
dtable = currentDTable.Clone();
Boolean urunVarMi = false;
var index = 1;
foreach (DataRow row in currentDTable.Rows)
{
if (row["Product_Name"].ToString() == txt_FiltrelenecekText.Text)
{
row["Index"] = index.ToString();
dtable.ImportRow(row);
urunVarMi = true;
index++;
}
}
if (urunVarMi == true)
{
grid_Product.DataSource = dtable;
grid_Product.DataBind();
}
else
{
EkranaMesajYaz("Product is not found in list.");
}
}
}
else
{
EkranaMesajYaz("Filter text is empty");
}
}
else
{
EkranaMesajYaz("Product List is null");
}
}
Sorularınızı gkhnmnts@gmail adresine atabilrsiniz.
Hiç yorum yok:
Yorum Gönder