Asp.NET veya .Net ile hazırlamış olduğunuz web sayfasında arama yapmak için küçük bir uygulama,Daha önce hazırlamış olduğum blog sayfasında kodlar denenmiştir sorunsuz şekilde çalışmaktadır.Öncelikle sayfamızın tasarım bölümünü ekliyelim.Tasarım bölümünde bir css yardımıyla sayfamızda aramış olduğumuz kelimelerin renkli şekilde gözükmesini sağlıyoruz.
<style type="text/css">
.highlight {text-decoration: none;color:black; background:#80FF00;}
</style>
<asp:GridView ID="GridView1"
RowStyle-BorderWidth="0"
RowStyle-BorderStyle="None"
gridlines="None"
runat="server"
HeaderStyle-BackColor="#F1F1F1"
cellpadding="4"
AutoGenerateColumns="False" style="margin-top: 0px"
EnableTheming="True"
Width="728px"
CellSpacing="6"
EnableModelValidation="True" Font-Overline="False" Font-Strikeout="False"
Font-Underline="False" AllowPaging="True"
onpageindexchanging="GridView1_PageIndexChanging" PageSize="8" ShowHeader="False">
<Columns>
<asp:TemplateField >
<ItemTemplate>
<div class='caixa'>
<div id='header-bottom1'>
</div>
<h3 class='post-title entry-title'>
<a href="mdat.aspx?mkid=<%#Eval("mkid") %>">
<%# HighlightText(searchString,(string)Eval("mkbas"))%></a></h3>
<div class='post-body entry-content'>
<%# HighlightText(searchString, DataBinder.Eval(Container.DataItem, "mkicerik").ToString().Length > 102 ?
DataBinder.Eval(Container.DataItem, "mkicerik").ToString().Substring(0, 102):
DataBinder.Eval(Container.DataItem, "mkicerik").ToString().Substring(0, DataBinder.Eval(Container.DataItem, "mkicerik").ToString().Length))%>
</div><br/>
<div class='footer-home'>
<span class='numComments'>
<a href="mdat.aspx?mkid=<%#Eval("mkid") %>">
<%# DataBinder.Eval(Container.DataItem,"yorsay") %></a>
</span>
<a href="mdat.aspx?mkid=<%#Eval("mkid") %>">yorum</a><span style="color:Black; margin:1px 1px 1px 480px" >
<%# DataBinder.Eval(Container.DataItem, "makzaman") %></span>
</span>
</div>
</div>
</ItemTemplate>
<ControlStyle Height="75px" Width="75px"></ControlStyle>
<ItemStyle />
</asp:TemplateField>
</Columns>
<EditRowStyle />
<FooterStyle />
<HeaderStyle ></HeaderStyle>
<PagerStyle/>
<RowStyle ></RowStyle>
<SelectedRowStyle />
</asp:GridView>
Tasarım kısmında görüldüğü gibi bir adet gridwiew kullandım,Anasayfamıza bir adet textbox veya input ekliyoruz.Textbox'dan gelen veriyi arama.aspx sayfamıza gönderiyorum,QueryString ile çekiyorum..Şimdi sayfamızın C# kodları ile aramayı nasıl yaptığımızı inceleyelim.
xt adında genel bir bir değişken oluşturuyoruz....
protected string xt = "";
protected string searchString = String.Empty;
Mysql veritabanına bağlanarak xt değeri ile arama yapacağımız tablolaları ayarlıyoruz ve grid ile veriyi okuyoruz..
private void BindData()
{
try
{
string ozel = xt;
string MyConString = ConfigurationManager.ConnectionStrings["myconum"].ToString();
MySqlConnection connection = new MySqlConnection(MyConString);
MySqlCommand command = connection.CreateCommand();
MySqlDataAdapter adapter = new MySqlDataAdapter("Select * from makale where (mkicerik Like '%" + ozel + "%') || (mkbas Like '%" + ozel + "%')|| (konkey Like '%" + ozel + "%')", connection);
DataTable dt = new DataTable();
adapter.Fill(dt);
GridView1.DataSource = dt;
GridView1.DataBind();
}
catch (Exception)
{
}
}
Web sayfamızda kelimelerin renkli olarak görünmesi için kodlarımız;
protected string HighlightText(string searchWord, string inputText)
{
if (searchString == "")
{
return searchWord.ToString();
}
else
{
Regex expression = new Regex(searchWord.Replace(" ", "|"), RegexOptions.IgnoreCase);
return expression.Replace(inputText, new MatchEvaluator(ReplaceKeywords));
}
}
public string ReplaceKeywords(Match m)
{
return "<span class='highlight'>" + m.Value + "</span>";
}
Sayfamızın load yani yüklenme bölmünde textboxdan gelen veriyi çekiyoruz,türkçe karekter sorunları için System.Text.Encoding.GetEncoding("ISO-8859-1") şeklinde düzenledim.
protected void Page_Load(object sender, EventArgs e)
{
try
{
xt = (HttpUtility.UrlDecode(Request.QueryString.Get("f"), System.Text.Encoding.GetEncoding("ISO-8859-1")));
Page.Title = xt;//Sayfa adını aranan kelime olarak değiştirdim,seo yani aramalarda bulunması için.
aralab.Text = "["+xt+"]" +" anahtar kelimesine ait sonuçlar...";//Gridwiew üst kısımdaki yazısı...
searchString = xt;
BindData();
}
catch (Exception)
{
}
}
Sayfalamada diğer sayfalara geçerken sürekli yaptığımız işlem...Sayfa değişince yeni verilerimizi okuyoruz..
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
try
{
GridView1.PageIndex = e.NewPageIndex;
searchString = xt ; // move the text in the searchString variable :)
BindData();
}
catch (Exception)
{
}
}
}
Son olarak arama.aspx sayfamıza bir adet textbox ve buton ile arama yaptığımız kelimeyi gönderiyoruz,veya arama.aspx?f=kelimemizi yazarak arama işlemini gerçekleştiriyoruz.
protected void Button4_Click1(object sender, EventArgs e)
{
try
{
if (ara_kut.Text == "")
{
ara_kut.Text = "Kelime Giriniz";
}
else if (ara_kut.Text != "")
{
Response.Redirect("arama.aspx?f=" + ara_kut.Text);
}
}
catch (Exception)
{
}
}
Uygulamada problem yaşarsanız mk102@hotmail.com adresinden yardımcı olabilirim.herkese kolay gelsin.
C# ASP.NET ile Arama Yapmak
Diğer Konular:
Mysql Turkce Karekter Problemi
Php Konulara Etiket Tag Ekleme
Php ile Navigation Kategori Kodu
Google botlar sitenize uğramıyorsa
C# SQLEXPRES bağkantısı connection
Kodların Renkli Gözükmesi-Sözdizimi Vurgulama
C# .Net gelen IP adresini kaydetmek.
Mysql C# .net ile Konuları veya Makale Sayfalama