17 Şubat 2009 Salı

Yazılım Test Uzmanları için Visual Studio Team System 2008 (Part 2)

TEST KULLANICI ARAYÜZÜ (UI)

Bu kısımda bahsetmiş oldugumuz test özelliklerinin VSTS deki arayüzünün nasıl olduğu hakkında bilgi edinmeye calisacagiz. Herhangi bir test yapmadan once VSTS nin bize sunduğu özelliklerden biri olan test proje tipi olusturuyoruz. Bunun için yapmamız gereken, üst menudeki File>New>New project (Dosya>Yeni>Yeni Proje) yolunu izlemek olacak. Bu işlemden sonra karşımıza VSTS de bulunan butun proje tipleri karsımıza gelecek. Biz bir tane Test proje tipi oluşturmak istediğimiz icin en asagida bulunan Test Project (Test Projeleri)’ nin altındaki Test Document i seciyoruz. Sag taraftaki menude karsımıza VSTS nin bize sagladigi templateler cıkıyor. Biz Test Project i seciyoruz.







Bu işlemi gerçekleştirdikten sonra Solution Explorerda da gorundüğü gibi GLBTestProject adında bir projenin olduğunu gosteriyor. Herhangi bir test projesi cözümümüze eklendiği zaman, bazı önceden tanımlanmıs ve projeyle birlikte gelen dosyalarda sisteme eklenir . Biz default olarak atılmıs bu dosyaları kullanmayacagimiz için sistemimizden silebiliriz. Peki bu otomatik eklenen dosyalar ne işe yarıyor biraz onlardan bahsedebiliriz. İlk başta eklenen klasor “Solution Items” in icersindeki otomatik eklenen dosyalar ne işe yarıyor onlara bir göz atalım.
localtestrun.testrunconfig — Test Çalıştırma ve Yapılandırma dosyası olan localtestrun.testrunconfig, testin nasıl çalıştırılacagina dair bilgileri saklar. Bu dosya testin nereden çalıstırılacagını (Local/Uzaktan) veya testi çalıştırmak için script önceliklerini, testler tamamlandığında scriptlerin temizlenmesi gibi bilgileri tasır.
GLBTestProject.vsmdi — Bu dosya bir Visual Studio metadata dosyasıdır. Dosya testlerin bagımlılıklarına göre, testin organizasyonunu saklamak için kullanılır (Mesela ilk başlatılacak test gibi). Bu meta dosyası, test yöneticisi penceresi kullanılarak değiştirilir ve seçilmiş testleri yürütme için IDE tarafından kullanılır.

Gelelim test projemizde otomatik olarak yaratılan ve silebilecegimiz dosyalar ne işe yarıyor ona bir göz atalım.Aslında bu dosyalar VSTS tarafından bize birer örnek olması amacıyla yaratılıyor. Bu yüzden silmemizde bir sakınca yok.
AuthoringTests.txt —Bu dosya aslında bizim projemize eklenmez, sadece Ana Düzenleme Ekranında (Main Editing Window) görüntülenir. Dosya sadece bir test projesinin çalışma temellerini anlamak için bize yardımcı olur.
ManualTest1.mht — Bu .mht dosyası, manual test (Elle test) için bir örnektir.
UnitTest1.cs — Bu dosya, birim testleri (Unit Test) kodlama işlemine yardımcı olcak bir sablondur.

Bu işlemi gerçekleştirdikten sonra, yeni bir test nasıl eklenir ona bakalım. VSTS ekranımızda sağ tarafından bulunan “Solution Explorer ” in içersinde bulunan test projemize (GLBTestProject) ters tıklayıp karşımıza cıkan menuden “Add” ürününü seçiyoruz. Aşağıdaki şekilde göründüğü gibi VSTS ın bize sagladigi butun test teknikleri hızlı menu seçimiyle karsımıza geliyor.




Hızlı Menu seçeneğinden kolay bir şekilde yeni test teknikleri oluşturabiliriz. Menunun ikinci kısmında gordünüz gibi mevcut testler burada sıralanıyor. Eger testler hakkında detaylı bilgileri gorerek bir ekleme istiyorsak, listenin en başında bulunan “New Test ” seçenegine tıklamamız yeterli olacaktır. Bu işlemi gerçekleştirdiğimiz zaman, şekilde göründüğü gibi karşımıza VSTS nin butun testleri detaylı bilgilerle ekrana geliyor.

İstediğiniz testi seçip, ismini sizin ve takım arkadaşlarınızın anlayacagi sekilde değiştirebiliriz. Eğer birden fazla test projemiz varsa “Add To Test Project” kısmından ilgili test projesini seçip, yeni testimizi ekleyebiliriz.
Şimdi kısa detaylarla bu kısımda bulunan testlerin niçin kullanıldıkları hakkında bilgi edinmeye çalışalım.
a. Manual Test Tipi (Elle Yapılan Testler)
Bu tip, test tipleri arasında en basit olanıdır. Elle yapılan test ile oluşturulan testler, grup içersinde etkileşimle tamamlanacak testlerdir. Mesela bir testimiz var, bu test cok karmaşık bir yapıya sahip ve bu testi tamamlamak uzun bir zaman gerektiriyor. Bu test birçok yazılımcı ve test uzmanı ile birlikte geliştirilecek kodlara sahip. Iste bu özelliklere sahip bir test manual test olarak yaratılır ve işlem elle geçici olarak tamamlanır.
b. Unit Test Tipi (Birim Test)
Adından da anlaşılabilecegi gibi birim testler, uygulamamız için yazdığımız alt program parçalarının, diğer tüm bağımlılıklarından izole edilerek belli koşullarda beklenen çıktıları verip vermediğinin kontrol edilmesidir.
Geliştirilen kodun çalıştığından emin olmak için bir test alt yapısı gerekmektedir. Bunu sağlamanın bir yolu, uygulamanın (fonksiyonlarının) çalıştırılması için, kodların üretilmesi ve gerek duyulduğunda biraz daha kod geliştirerek, test projeleri oluşturmaktır. Uygulamanın her biriminin test edilmesi hedeflendiği için, birim testleri olarak adlandırılmış. Bu testlerin en önemli avantajı, her türlü değişiklikte tekrar tekrar çalıştırılabilir olması. En azından, fonksiyonel seviye de hataları yakalamak mümkün. Birim testlerinin proje bazlı takip edilmesi, üretilmesi ve çalıştırılması için bir alt yapı (Framework) sağlanmıştır.
Temel olarak birim testleri; iş fonksiyonlarının doğru çalıştığını, beklenen değerlerin elde edilmesi için test durumlarının tasarlamasını kapsıyor. Birim testleri ile metod seviyesinde test gerçekleştirildiği için, yazılım geliştiricinin sorumluluğunda gözüküyor. Araçlar Test uzmanı için VSTS sürümünde de yer alıyor.

c. Web Test Tipi
Web test tipinde, yapacaginiz tüm etkileşimler kayıt altına alınır ve bu kayıt Microsoft Internet Explorer tarafından gerçekleştirilir. Fareyi her tıkladığınızda bütün HTTP istekleri playback yapabilmek için tarayıcı tarafından yakalanır. Bu istekler ALMA (GET) ve GÖNDERME (SUBMIT) yaklasımlarını ve formlardan veri gönderme yaklaşımlarını içerir. Hatta kaydedilen test için farklı değer kümeleri göndermeye olanak saglar.
d. Load Test Tipi
Load Test yaparak sistemin birden fazla kullanıcı ve çesitli senaryolarla nasıl tepkiler verebildigini ölçebiliyoruz. Aslında load test, diger test özelliklerinin çeşitli senaryolarla belirli özelliklerle tekrar edilmesinden olusuyor. Load testler birden fazla bilgisayarı test etmenize olanak sağlar. Isterseniz sadece kendi local makinenizde test yapabileceginiz gibi Visual Studio Team Test Load Agent (VSTTLA) sayesinde uzaktaki birden fazla bilgisayarıda aynı anda test edebilirsiniz.
e. Ordered Test Tipi
Ordered test tipi, belirtilmiş bir sıra dogrultusunda, farklı tipteki testleri düzenlememize izin verir. Mesela birim testlerden olusan bir grubumuz var ve bu grup bir ordered testin elemanı degilse, testleri çalıstırırken hiçbir yol ve sıra izlenmez hatta bir sonraki çalıstırmanında bir önceki sırayla aynı olacagida garanti degildir. Mesela bir kullanıcı ekleme ve kullanıcı giriş birim testleri yapmak istiyorum. Once kullanıcı ekleme birim testinin başarılı olması lazım ki sonra oluşturulmus kullanıcı uzerinden kullanıcı giris birim testini çalıstırabiliyim. Iste bu sırayı kesin saglama için Ordered Test tipi kullanılır.
f. Generic Test Tipi
Generic test, Organizasyonda hali hazırda bulunan herhangi bir testen yararlanmamızı saglar. Bu tip yaygın olarak bir komut satırı calıstırarak mevcut testleri desteklemek icin kullanılır. Mesela bir cok takım, uygulamalarına karsı testlerini çalıştırmak için ya batch dosyaları yazarlar yada basit komut satırı programları oluştururlar. Mesela MyTest.exe/run_all gibi olur. Sonra aynı komut satırını çalıştırmak için bir generic test yapılandırılır. Yararı ise Generic terstleriniz Visual studio da diger testleriniz arasında gorunur.



Devamını okuyun...>>

16 Şubat 2009 Pazartesi

Yazılım Test Uzmanları için Visual Studio Team System 2008 (Part 1)


Giriş

Eski tek kullanıcılı programlar yerini daha fazla kullanıcıyla giriş yapılan online sistemlere bırakmaya başladı. Bunun getirisi olarak sistemin, birden fazla kullanıcı dahil oldugunda nasıl bir tepki gosterecegi yazılım yaşam döngüsünde (SDLC) canlıya almadan önce kilit bir nokta olmaya başladı. Visual Studio Team System ile test durum yönetimi konusunda çok ciddi bir yatırım gerçekleştirdi. Test uzmanlarına, farklı testleri gerçeklestirmek için test araçları ve bu testlerin yönetimi,çalıstırılması, izlenmesi ile ilgili test durum yönetimi araçları sunmustur. Bu araçlar ile, yazılım gelistirme ve bakım süreçlerindeki test islemleri desteklenmektedir. Mesela, Load Test yaparak sistemin birden fazla kullanıcı ve çesitli senaryolarla nasıl tepkiler verebildigini ölçebiliyoruz. Aslında load test, diger test özelliklerinin çeşitli senaryolarla belirli özelliklerle tekrar edilmesinden olusuyor. Bu konuyla ilgili detaylı bilgileri ilerleyen bolumlerde bulacagiz.


Visual Studio Team System, SDLC de butun ihtiyac duyulan kısımları gerceklestirmeyi sağlıyor : source code control, automated build system, testing, architecture... Yani VSTS bu kısımda ikiye ayrılıyor : “Visual Studio Team System For Software Developers” ve “Visual Studio Team System For Software Testers”. VSTEST ile VSTESD elbette birbirinden ayrı süreçlere sahipler yalnız, testler gerçekleştirilken bazı bölümleri paylaşıyorlar. Aşagıdaki grafik bu konuyu bize daha detaylı bir sekilde anlatıyor.




Yazılım gelistiriciler için birim test alt yapısı (Unit Testing) VSTEST sürümüyle de birlikte kullanılabilmektedir. Yazılım gelistiriciler için VSTS sürümündeki birim testlere ek olarak; uygulamaların fonksiyonel ve operasyonel gereksinimlerini test etmek için bir çok test tipi daha sunulmustur. Bu test tipleri ve açıklamaları asağıdaki tablodaki gibidir.

Bu test tiplerinin olusturulması, çalıstırılması, test sonuçlarının kaydedilmesi, basarısız testlerin yazılım gelistiriciye yönlendirilmesi, test istatistiklerinin izlenmesi, test raporlarının yayınlanması islemleri de, Test uzmanları tarafından gerçeklestirilen isler arasında. Test uzmanı, isinin merkezinde fonksiyonel bir yönetim ekranı (Test Manager) ile islemlerini takip etmektedir. Bu araç özellestirilebilir bir yapıda ve gruplama, sıralama, filtreleme ve kolon seçme özelliği gibi özelliklere sahiptir. Asağıda, Test yöneticisinin tüm testleri aynı ekranda listelediği bir ekran görüntüsü sunulmustur :




Test yöneticisi genis özelliklere sahip. Üzerinde çalısılan testlere, daha basit ve hızlı erisim için bir de Test görüntüleme (Test View) aracı hazırlanmıs. Asağıda, Test görüntüleme aracının, ekran görüntüsü sunulmustur :



VSTS ile tanıtılan yeni bir proje tipi daha var. Test Projeleri. Test projesi, tüm testlerin saklanması için tasarlanmısdır. En önemli avantajı, diğer projeler gibi, kaynak kod yönetim sisteminde saklanması. Değisikliklerin takip edilmesi, versiyonlama, geriye alma gibi fonksiyonlar da testler içinde kullanılabilmektedir. Testlerin çalıstırılması ile, hatalı ve düzeltme gerektiren durumların belirlenmesi, sonuçların değerlendirilmesi islemi için Test sonuçlarının takip edildiği bir ekran var. Farklı testlerin çalıstırılması ile ilgili tüm sonuçlar buradan izlenebiliyor. Test uzmanları, çalıstırılmıs,devam eden ve çalıstırılmayı bekleyen tüm testleri bu ekrandan takip edebilirler. Basarısız testler için, hatayı içeren bir is takip nesnesi (Bug Work Item) hazırlanıp, yazılımcıya gönderilebilir. Yazılım gelistiriciye gelen is takip nesnesi üzerinden, test durum bilgilerine ulasılabilir. Hatanın düzeltilmesi, yeni is takip nesnesinin olusturulması ve testin tekrar çalıstırılması ile süreç tekrar test uzmanına tasınır. Proje yöneticisinin de, web sitesi üzerinden hata izleme raporlarını takip edebilmesi ile, gerçekten iyi bir birlikte çalısma ortamı sunulmus. Zaten VSTS ‘nin en önemi hedefi takım çalısması.

Devamını okuyun...>>

14 Aralık 2008 Pazar

CSLA ile Web Projesi yapmak (Part 1)

Merhabalar bu makalede Rockford Lhotka'ın yazmış oldugu bir framework olan CSLA.NET ile bir web projesinin tamamını sizinle paylaşmaya çalışacağım. CSLA.NET ile ilgili herşeyi aslında http://www.lhotka.net/cslanet/ sitesinden temin edebilirsiniz. Gelelim asıl mimariye. Bu CSLA ile neler yapabiliriz hadi başlayalım.



Architecture 'un oluşturulması:

Distributed Architecture
Nesneye dayali programlama genis bir konu. Ve simdi hangi architecture kullansak diye bir soru sorsak, herkes kafasında farkli bir yapiyla cevap vermeye calisacaktir. Oluşturacagimiz yapi cercevesinde amacimiz bütün .net uygulamalari icin kullanabilecegimiz bir yapi olustumak olacaktir. Kodlamaya başlanmadan once oluşturulacak bu Physical ve Logical modeller bizim birlikte daha yararli ve hizli bir çözüm oluşturmamizi sagliyacaktir.




The 5-Layer Logical Architecture
Boyle bir architecture yaratilirken asil amac butun .net technolojilerinin ayni yapiyi kullanabilmesidir. Amacimiz Windows, Web ve Web Service interfaceleri icin desteklenen, mantikli, birlestirilmis bir nesneye- dayali yapi olusturmak olacaktir.



Presentation:
Aslinda ilk bakista Presentation layer ile UI layer birbirinin aynisi gibi gorunebilir, sonucta ikiside kullanıcılar icin Graphical User Interface dir. Browser kullaniciya bazi gorseller sunar ve kullanıcının girdigi degerleri toplar. Burada yazilmasi gereken kod output’u olusturmak yada girilen inputu toplamamaktır. Bu iki işlemde esasinda web server tarafinda yapilir, client kullanici bu yapilan işlemlerden bihaberdir. Elbette Javascript vb. client side çalisir. Ama guvenilir degildir. Presentation layer, UI layerden sadece fiziksel bir şekilde ayriliyor. Tam olmasa da kullanıcının gordugu ekranların olustugu kısım aslında bir nevi.


UI:
UI layer, kullanıcılarin isteklerini karsilamakla yukumlu bir katmandir.
Butun webforms, winForms, server- side operations vb.. bu katman icersinde gerceklerstirilir. Aslinda ham verinin işlenecegi, bir alt katman olan Business Logic Layer’a da gerekli veriler buradan yollanir.



Business Logic Layer (BLL):
Bu katman aslında olusturulacak application un iskeletini olusturuyor olacak. Bütün data dogrulama, business kurallari, çalistirma, isletme, bu kisimda gerceklestirilir.


Data Access Layer (DAL):
Data Access Layer ile data managment asındaki iletisim insert, update, remove operasyonlarina erişebilmektir. Aslında data access layer datayi yönetmez yada datayi saklamaz, gorevi sadece business layer ile database arasinda bir köprü saglamaktir.


Data Storage And Management :
Ve son katman, database serverlarin (SQL/Oracle…) ve web serviceler uzerinden ulasilabilen diger applicationlarin bulundugu kısımdır.

Yani kısacası kullanacagimiz logical architecture ve Framework design asagidaki gibi olusacaktir.



Biz projemiz icin kullanilacak mimariyi kısa hatlariyla tanimaya calistik. Ve şimdi bir web projesi icin bu mimariyi nasil uygulamamiz gerektigini asagidaki figurede daha detayli bir sekilde gorecegiz.





Web tabanli programlarda, en iyi performansi saglayabilmek icin phsical katlari en azami sayiya getirmemiz gerekir. Buna ragmen performansla birlirlikte, ölceklenebilirlik ve guvenliğinde en üst seviyede olmasi lazim. Presentation kısmı phsical olarak zaten clientin makinesi olacaği icin onu ayri bir katman olarak ayiralim, ama UI, Business Logic ve Data access layerları aynı makine ve ayni process de kosabilirler. Ve eger kucuk bir application olusturulacaksa. Database Managment Layer da ayni makineda tutulabilir. Eger daha Secure bir web configurasyonu yaratmak istiyorsak logical architecturemız asagidaki gibi olacaktir.









Devamını okuyun...>>

08 Aralık 2008 Pazartesi

A.R.O.G

Cem Yılmaz'ın saçma sapan çalışmalarından bir tanesi daha hala vizyonda. GORA faciyasından sonra AROG da tarihteki en kötü yapımlar arasına girmeye hak kazanacak sanırım. Filme gülmek için gitmek isteyenler bir kez daha düşünsün bence, gülmekten çok film boyunca verdiginiz paraya aciyorsunuz ve hüzün icersinde bir iki saat geciriyorsunuz. Gelelim filmdeki animasyonlara; gerçekten başarılı sahneler var, yok değil ama sırf bu animasyonları gormek içinde bunca eziyet çekilmez diye düşünüyorum. Gitmenizi kesinlikle tafsiye etmem. Ama yinede izlemek isteyenlere iyi seyirler..





Devamını okuyun...>>

05 Aralık 2008 Cuma

Madagaskar 2

2005 yılının olay yaratan animasyon filmi madagaskar ikinci ve daha eğlenceli devamıyla yeniden beyaz perdeye girdi. Filmi geçen hafta izleme imkanı buldum. Gelmiş geçmiş en iyi animasyon filimlerinden biri olan madagaskarın ikincisi, birinci filmin kaldığı yerden devam ediyor. Ilk filmde New York hayvanat bahçesi sakinleri Alex, Marty, Melman, Gloria, Maurice, penguenler kendilerini devasa ada Madagaskar sahillerine çıkmış bulurlar. İkinci filmde New York'lu kahramanlarımız geri dönmek için yere çakılmış eski bir uçağı ele alır ve tamir ederler. Yolculuğa başladıktan sonra uçak afrika adasında düşer ve Madagaskar'ın ikinci filmi başlamış olur.New York’taki hayvanat bahçesinde doğup büyümüş kahramanlarımız, Afrika macerasında hayatlarında ilk kez kendi cinslerinden hayvanlarla karşılaşacaklar.




Madagaskar 2 Film Kadrosu

YönetmenEric Darnell, Tom McGrath
SenaryoEtan Cohen
OyuncularYekta Kopan, Sacha Baron Cohen, Ben Stiller, Chris Rock, Jada Pinkett Smith, David Schwimmer, Cedric the Entertainer , Andy Richter
Filmin TürüAnimasyon / Komedi / Macera
Orijinal AdıMadagaskar 2
Yapımcı FirmaMireille Soria
Yapım Yılı2008, ABD
Resmi Sitesihttp://www.madagascar-themovie.com/
Dağıtıcı FirmaUIP Filmcilik
Vizyon Tarihi28 Kasım 2008






Devamını okuyun...>>

03 Aralık 2008 Çarşamba

ASP.Net Seçili yazının başına yada sonuna karakter ekleme

Kısa tanımı başlıkta aslında ne yapmak istediğimizin "Seçili yazının başına yada sonuna karakter ekleme". Geçen bir arkadaşın sorması uzerine yaptıgım küçük bir javascript ve html kodlarıyla halledilebilen bir olay. Peki neden kullanacağız bunu, orasını bende tam bilmiyorum ama sanırım online sozlüklerde filan oluyor bu tarz şeyler. Neyse gelelim kod yapısına şimdi bir aspx sayfası yaratıyoruz ve javascripti yazıyoruz. Script bize seçilmiş olan kelimeyi ve cursorun pozisyonunu veriyor, bizede yapmak istedigimiz işlemi buraya yazmak kalıyor. Umarım yardımcı olur hepinize iyi kodlamalar...




<%
@ Page Language="C#" AutoEventWireup="true" ValidateRequest="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">


<SCRIPT>

function storeCaret (textEl) {

if (textEl.createTextRange)


textEl.caretPos = document.selection.createRange().duplicate();

}

function MakeBold (textEl) {

if (textEl.createTextRange && textEl.caretPos) {

var caretPos = textEl.caretPos;

caretPos.text =
caretPos.text.charAt(caretPos.text.length) ==
' '
?
caretPos.text + ' ' : '<b>' + caretPos.text + '<b>';
}

}

function
MakeBkz(textEl) {

if (textEl.createTextRange && textEl.caretPos) {

var caretPos = textEl.caretPos;

caretPos.text =
caretPos.text.charAt(caretPos.text.length) ==
' '
?
caretPos.text + ' ' : 'bkz.' + caretPos.text;
}

}

</SCRIPT>

</HEAD>

<BODY>
<form id="form1" runat="server">

<TEXTAREA NAME="aTextArea" ROWS="5" COLS="80" runat="server"

ONSELECT="storeCaret(this);"

ONCLICK="storeCaret(this);"

ONKEYUP="storeCaret(this);"
id="aTextArea"

>Emre Akyürek

</TEXTAREA>

<BR>

<INPUT TYPE="button" VALUE="Bold" id="btnBold"

ONCLICK="MakeBold(this.form.aTextArea);"
>
<INPUT TYPE="button" VALUE="Bkz" id="btnBkz"

ONCLICK="MakeBkz(this.form.aTextArea);"
>
</form>

</BODY>

</HTML>


Devamını okuyun...>>

Aranılan kelimeyi highlight yapmak


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);

}







Devamını okuyun...>>
Technology Blogs - BlogCatalog Blog Directory