
Aslında arama yaparken hep karşımıza cıkar, aradığımız kelime bulunduğunda bize daha ilgi çekici birşekilde yansıtılması. İşte bu yazıda c# ve asp .net kullanarak bu işlevi nasıl gerçekleştirebiliriz ona bakacağız.
Başlangıç olarak bizim bulunan kelimenin formatının ne olacagına karar vermemiz gerekiyor ben dolgu olarak satrı üstüne siyah yazı şeçtim. Aşağıdaki css dosyasını hazırlıyoruz.
<style type="text/css">
.highlight
{text-decoration:none;
font-weight:bold;
color:black;
background:yellow;}
</style>
Tabiki bunu biraz sonra kullanacagiz ama elimizde bulunsun şimdilik. Şimdi projemizi oluşturmaya başlayalım. Yeni bir web projesi aciyoruz ve Default.aspx sayfamıza bir tane TextBox bir tane Button ve son olarak bir tane Label atıyoruz. Sayfamızın Head kısmına yukarda gördüğümüz css stiliniz yerleştiriyoruz. Page tagında Strict="true" Buffer="true" Explicit="true" Debug="false" şeklinde yazıyoruz. Sayfanın tam hali aşağıdaki gibi.
<%@ Page Language="C#" AutoEventWireup="true" Strict="true" Buffer="true" Explicit="true" Debug="false" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.highlight
{text-decoration:none;
font-weight:bold;
color:black;
background:yellow;}
</style>
</head>
<body bgcolor="#FFFFFF" topmargin="0" marginheight="0" >
<H3>Kelime Ara</H3>
<BR />
<form id="Form1" runat="server" method="post">
<asp:TextBox id="txtSearch" runat="server"/>
<asp:Button id="btnSearch" Text="Ara" runat="server" onclick="btnSearch_Click" /><br><br>
<asp:Label id="lblText" runat="server" Visible="true"/>
</form>
</body>
</html>
Sayfamızın Design kısmı bukadar. Şimdi Codebehind da neler yapacağız ona bakalım. Bir regex sayesinde aranmak istenen kelimeyi bulduğumuz zaman başına yazdığımız style ile bir span tagı ekliyoruz işlem bu kadar.
void Page_Load(Object Source, EventArgs E)
{
lblText.Text = "Arama Yapılacak Metin";
}
public string Highlight(string Search_Str, string InputTxt)
{
Regex RegExp = new Regex(Search_Str.Replace(" ", "").Trim(), RegexOptions.IgnoreCase);
return RegExp.Replace(InputTxt, new MatchEvaluator(ReplaceKeyWords));
}
public string ReplaceKeyWords(Match m)
{
return "<span
class=highlight>" + m.Value + "</span>";
}
protected void btnSearch_Click(object sender, EventArgs e)
{
lblText.Text = Highlight(txtSearch.Text, lblText.Text);
}


2 yorum:
bi gün nete girmedik döktürmüşsün :)
Ellerine sağlık çok yararlı bilgiler, bayramda geleceğim birazdan bilet alacağım.. Düzce dönüşü görüşmek dileğiyle...
İyi çalışmalar kardeşim
Tesekkurler kardesim. Bayramda Ankaradayım. Perşembe doncem goruselim mutlaka.
Yorum Gönder