Asp.Net Siteİçi Arama Detaylı Anlatım

psygnosis
31-01-2012, 15:34   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
11 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

[SIZE="3"][COLOR="DarkRed"]Öncelikle paylaştığım konunu visual studio dosyasını http://ul.to/iynrbo9e indirebilirsiniz.[/COLOR][/SIZE]

Not: açılan sitede üst barda 5 ten geriye sayıcak bitince " Skip Ad "'e basın download sayfası gelicek


İlk Önce bir Master Page oluşturup... Bir TextBox ve bir Button atıyoruz..

Daha sonra Sitede Ara! butonunun click Event'inde aşağıdaki kodları yazıyoruz..

[COLOR="Navy"]1)[/COLOR]  Textbox'a girilen değer bir kelimemi yoksa birden fazlamı onu kontrol ediyorum. Eğer içinde boşluk varsa birden fazladır.

[COLOR="Navy"]2)[/COLOR] Daha sonra textbox'taki değeri boşluğa göre Split edip bir diziye atıyorum.. Kelimeleri tek tek işleyebilmek için.

[COLOR="Navy"]3)[/COLOR] Querystring üzerinde kullanabilmek için string yol değişkeni değeri boş olacak şekilde tanımlıyorum.

[COLOR="navy"]4)[/COLOR]  Dizinin içinde dizinin boyutu kadar dönüyorum

[COLOR="navy"]5)[/COLOR]  ve yol değişkenin querystring yolu olcak şekilde oluşturuyorum.
                        bu for döngüsünün sonucu şu şekilde çıktı vericek...
                         kelime0=....&kelime1=...&

[COLOR="navy"]6)[/COLOR] Yukardaki sorguyu oluştururken her dönüşte += yaparak üzerine ekleme yaptıgı için sonda  bir tane " & " işareti fazladan olacak.. Onu substringle yol'dan çıkarıyorum..

[COLOR="navy"]7)[/COLOR]  Daha sonra Response redirectla arama sayfasına querystring yolunu veriyorum..
Şöyle bir çıktı olmuş oluyor.....
arama.aspx?kelime0=...&kelime1=....&....

[COLOR="navy"]8)[/COLOR] Textbox Boşluk içermiyorsa tek kelimeyi querystring'le yolluyorum.

Master Page'ten 1 arama.aspx sayfası türetelim... ve ContentPlaceHolder içine bir tane DataList atalım...
Daha Sonra aşağıdaki kodları yazalım...

[COLOR="Navy"]1)[/COLOR]  Kaç tane query var onu öğrenip queryCount değişkeninne atıyorum...
[COLOR="Navy"]2)[/COLOR] Az öncekine benzer şekilde.. Veritabanında arama yaptırcak sorgu değişkenini yine boş olucak şekilde tanımlıyorum..
[COLOR="navy"]3)[/COLOR] Burda gelen QueryString'ler 1 den fazla ise Or kullanarak birden fazla sqlSorgusu oluşturuyorum..
[COLOR="navy"]4)[/COLOR]  queryString sayısı kadar dönüp sorguyu LIKE arama komutuyla bütün queryString verilerini arattıryorum...
[COLOR="navy"]5)[/COLOR] Bunun çıktısı şu şekilde olur....

                         "makaleBaslik LIKE '%kelime0 or makaleBaslik LIKE '%kelime1 or.... %' or " şeklinde olcak..
[COLOR="navy"]6)[/COLOR] Burası query sayısı 1 ise oluşacak sorgu..
[COLOR="navy"]7)[/COLOR] Veri okuyorsa
[COLOR="navy"]8)[/COLOR] Arama.aspx'e attıgım Datalist'e Bind ediyorum
[COLOR="navy"]9)[/COLOR] Okumuyorsa hata sayfasına gönderiyorum.. Bu kadar.. Çalışmasını göreLim.. Çok güzel şekilde çalıştı yalnız bu kodlar sadece makale başlıklarında arama yapar içerikte arama yapmak istiyorsanız sorguyu çevirebilirsiniz kolay gelsin...

Projenin Çalışır halini linkten indirebilirsiniz.. Veritabanı kendi kodlarınıza göre ayarlayın..

 Kaynak

Konu bana aittir alıntılama yaparsanız Nickimi alıntılayın lütfen

Son Düzenleme: psygnosis ~ 27 Mart 2015 23:21