Özet : Google suggest'teki gibi, öneri yapan bir textbox yazalım.
AJAX Kontrolleri - Suggest TextBox
Mehabalar.
Önceki makalelerimde, Ajax'ın ne olduğundan
teknik olarak bahsetmiş ve bir master-detail ilişkili dropdownlist örneği
yapmıştık. Şimdi ise, biraz daha yetenekli, daha çok kullanabileceğimiz bir
TextBox yazalım. Google Suggest'i çoğunuz görmüşsünüzdür.
Bilmeyenler hemen
tıklayıp ne olduğuna bakabilirler.
Google Suggest Ajax kullanımına en güzel örneklerden biridir. Biz de
projelerimizde aynı bu şekilde bir textbox'ı nasıl yapabileceğimizi
görelim. Öncelikle iş sürecimizi ve ihtiyaçlarımızı belirleyelim.
1) Kullanıcı sayfayı açar.
2) TextBox'a bir kaç karakter yazar.
3) Birinci karaktere basıp, parmağını tuştan çektiği anda,
database'e gidip bu karakter ile baslayan veriler alınır.
4) Database'den alınan değerler TextBox'ın hemen altında
açılan bir pencerede gösterilir.
5) Kullanıcı eğer yeni tuşlara basıyor ise 3. adımdan
itibaren işlem tekrarlanır.
6) Kullanıcı panel üzerinden istediği kayıdı seçebilir aynı
zamanda kendi istediği bir değeri de girebilir. (bu sayede textbox özelliği
bozulmamış olur.) 7) Seçilen itemın değeri TextBox'a yazılır.
Note: AJAX mimarisi olacağı için bu işlem sırasında sayfa kesinlikle POST-BACK olmayacaktır.
Ve hemen ihtiyaçlarımızı belirleyelim. Bir TextBox ve bir
html panel başlangıç için yeterli olacaktır.
Ve şimdi de ajax için gerekli kodlara bakalım. Öncelikle ilk yapmamız gereken
sayfamızın
ICallbackEventHandler arayüzünü imlpement etmesini sağlamak. Ardından Page_Load fonksiyonunda client
scriptlerimizi aşağıdaki şekilde register edelim.
Koda dikkat ettiğinizde AJAX mantığını oluşturan kısım yalnızca
OnCallback(Result,Context) fonksiyonundaki
document.getElementById('MainPanel').innerHTML = Result; satırıdır.
Diğer bölümlerin ise neler yaptıkları zaten oldukça açık. TextBox'a eklediğimiz
attribute'a dikkat lütfen. OnKeyUp ile, klavye tuşundan parmağımızı çektiğimiz
anı yakalayarak server'a bunu gönderiyoruz. Peki serverda bu eventi yakalayıp
işleyen fonksiyon nedir?
Bu sayede, programımız her tuşa basışımızda database'e
bağlanarak bize o harf / harfler ile başlayan Product isimlerini getirir.
İtemları seçimi kolaylaştırmak, renklendirmek vb. işlemler için ayrı birer panel
olarak yarattım. Bu sayede, mouse ile gezindiğimizde itemları ayrı ayrı
renklendirip, bir item seçildiğinde, değerini
OnSelect javascript fonksiyonuna göndererek textbox'ın içine
atabildik.
Bu kodda bir önceki dropdownlist örneğine göre daha sade,
daha kolay anlaşılan bir javascript kullandık. Umarım hepimiz için faydalı
olacaktır.