GridViewde Ajax İle Arama Yapma ve Aranan İfadeyi Gösterme

Gridview içerinde kayıtları görüntüledikten sonra bu kayıtlar arasında belli bir alana göre örnek olarak isim alanına göre arama işlemini nasıl yapacağız İsmi Ali olanlar yada isiminde a harfi geçenler gibi şimdi bu konu ile ilgili bir uygulama yapalım. Arama işlemi esnasında sayfayı yenilemeden sonuçları gösterebilmek için Ajax’ın nimetlerinden faydalanacağız. Projenin çalışan halini konu sonundan indirebilirsiniz…
Sayfa tasarımını yapalım ilk olarak sayfamızda neler olacak kayıtları görüntülemek için GridView, Ajax kullanacağımız için ScriptManager, sayfayı yenilemeden güncelleyeceğimiz için UpdatePanel ekliyoruz gridview nesnesini UpdatePanel içine koyacağız.
gridviewarama

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Aspnetornekleri.com Gridview Ajax Arama</title>
    <style type="text/css">
.highlight 
{
    text-decoration:none; 
    font-weight:bold;
    color:black; 
    background:yellow;
}
body {text-align: center; 
      padding:0 auto;
margin: 0 auto}
</style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager ID="ScriptManager1" runat="server" />
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div>
            <!-- www.aspnetornekleri.com -->
                <asp:Label ID="lblAlert" runat="server" Visible="false" Text="Aradığınız Şartlara Uygun Kayıt Bulunamadı. Başka bir ifade deneyin."></asp:Label>
    <asp:GridView ID="GridView1" runat="server" Width="400px" HorizontalAlign="Center"
                         AutoGenerateColumns="false" AllowPaging="false"
                        DataKeyNames="PERSONEL_NO" OnRowCommand="GridView1_RowCommand" 
                    ShowFooter="true" >
                      <FooterStyle BackColor="DarkOrange"
                    ForeColor="AntiqueWhite" />
                    <PagerStyle BackColor="#99CCCC"
                    ForeColor="#003399" HorizontalAlign="Left" />
                    <HeaderStyle BackColor="DarkOrange"
                    Font-Bold="True" ForeColor="White" />
                        <Columns>
                          
                            <asp:BoundField DataField="PERSONEL_NO" HeaderText="PERSONEL NO" />
                            <asp:TemplateField HeaderText="PERSONEL ADI">
                    <ItemTemplate>
                    <asp:Label ID="ADI" runat="server" Text='<%# Highlight(Eval("ADI").ToString()) %>'>
                    </asp:Label>
                    </ItemTemplate>
                    <FooterTemplate>
                    <asp:TextBox ID="txtara" runat="server"
                         ></asp:TextBox>
                    <asp:Button ID="btnara"
                                CommandName="Ara"
                                runat="server" Text="Pesonel Ara"
                                 />
                    <asp:Button ID="btngeri"
                                CommandName="Geri"
                                runat="server" Text="Geri" Visible="false"
                                Width="60px" />
                    </FooterTemplate>
                    </asp:TemplateField>
                            <asp:BoundField DataField="GOREVI" HeaderText="GÖREVİ" />
                            <asp:BoundField DataField="UCRET" HeaderText="ALDIĞI ÜCRET" />
                            <asp:BoundField DataField="GIRIS_TAR" HeaderText="İŞE BAŞLAMA TARİHİ" />
                                                  </Columns>
                    </asp:GridView>
                    </div>
                    </ContentTemplate>
    </asp:UpdatePanel>
    <!-- www.aspnetornekleri.com -->
    <asp:UpdateProgress ID="UpdateProgress1" runat="server">
        <ProgressTemplate>
          <img src="resim/yukleniyor.gif" alt="Aranıyor... Lütfen Bekleyin"/>
        </ProgressTemplate>
    </asp:UpdateProgress>
    </div>
    </form>
</body>
</html>
<!-- www.aspnetornekleri.com -->

Aranacak ifade text kutusunu yazıldıktan sonra AraBul isimli fonksiyon çalışıyor burada veri tabanı içinde tekrar bir sorgu yapılarak gridview de aranan ifadenin olup olmadığı tespit ediliyor yalnız burada sorguya like parametresi eklenerek içinde ADI alanında sorgulanıyor eğer sonuç var ise gridview içi yeniden dolduruluyor ve daha sonra arana ifadenin zemin rengi belirt isimli fonksiyon yardımıyla sarıya boyanıyor.
gridviewara

DataTable dt;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                griddoldur();
            }
        }
        private void griddoldur()
        {
            OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/personel.accdb"));
            baglanti.Open();
            //www.aspnetornekleri.com
            string komut = "Select * from personel";
            OleDbDataAdapter dAdapter = new OleDbDataAdapter(komut, baglanti);
            DataSet ds = new DataSet();
            dAdapter.Fill(ds);
            //www.aspnetornekleri.com
            dt = ds.Tables[0];
            GridView1.DataSource = dt;
            GridView1.DataBind();
            baglanti.Close();
        }
        private void AraBul(string straranan)
        {
            lblAlert.Visible = false;
            OleDbConnection baglanti = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; DATA Source=" + Server.MapPath("App_Data/personel.accdb"));
            baglanti.Open();
            string komut = "Select * from personel";
            OleDbDataAdapter dAdapter = new OleDbDataAdapter(komut, baglanti);
            DataSet ds = new DataSet();
            dAdapter.Fill(ds);
            //www.aspnetornekleri.com
            dt = ds.Tables[0];
            DataView dv = new DataView(dt);
            string aranacak = null;
            if (!String.IsNullOrEmpty(straranan))
            {
                aranacak = string.Format("{0} '%{1}%'",
                GridView1.SortExpression, straranan);
            }
            dv.RowFilter = "ADI like" + aranacak;
            if (dv.Count > 0)
            {
                GridView1.DataSource = dv;
                GridView1.DataBind();
                Button backbutton = (Button)GridView1.FooterRow.FindControl("btngeri");
                backbutton.Visible = true;
            }
            else
            {
                lblAlert.Visible = true;
            }
        }
        //www.aspnetornekleri.com
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            System.Threading.Thread.Sleep(2000);
            if (e.CommandName == "Ara")
            {
                TextBox aranan = (TextBox)GridView1.FooterRow.FindControl("txtara");
                AraBul(aranan.Text);
            }
            else if (e.CommandName == "Geri")
            {
                griddoldur();
            }
        }
        public string Highlight(string InputTxt)
        {
            GridViewRow gvr = GridView1.FooterRow;
            if (gvr != null)
            {
                TextBox txtornek = (TextBox)GridView1.FooterRow.FindControl("txtara");

                if (txtornek.Text != null)
                {
                    string straranan = txtornek.Text;
                    //www.aspnetornekleri.com
                    Regex belirecek = new Regex(straranan.Replace(" ", "|").Trim(),
                                   RegexOptions.IgnoreCase);
                    return belirecek.Replace(InputTxt, new MatchEvaluator(belirt));

                }
                else
                    return InputTxt;
            }
            else
            {
                return InputTxt;
            }
        }
        public string belirt(Match m)
        {
            return "<span class='highlight'>" + m.Value + "</span>";
        }

Gridview Arama Yapma İndir