23 Eylül 2009 Çarşamba

c# autocompleting google and youtube suggestions

Google'da veya Youtube'da arama kutusuna birşeyler yazarken hemen aşağıda yazdığımız kelimeye ilişkin kelimeler gelmektedir. Üzerinde çalıştığım bir proje için bu tarz bi uygulamayı combobox üzerinde yapmam gerekti.

Şimdi nasıl yapacağımızı anlatayım.



System.Xml namespace'ini ekleyelim.
using System.Xml;
2 global değişken(field) tanımlamamız gerekiyor.
XmlDocument suggestdoc = new XmlDocument();
AutoCompleteStringCollection colect = new AutoCompleteStringCollection();
suggestdoc isimli değişken yazılan kelimeye ilişkin kelimeleri xml formatında tutacak. colect isimli değişken ise comboboxun autocomplete sırasında bakacağı kelimeleri tutacak. Forma bir combobox kontrolü ekledikten sonra aşağıdaki methodu comboboxun textchanged olayında kullanın. Bu arada comboboxun AutoCompleteMode özelliğini suggest, AutoCompleteSource özelliğini ise customsource olarak ayarlayın.

public void getsuggestions()
{
    string suggesturl = "http://www.google.com.tr/complete/search?hl=tr&xml=true&q=";
    colect.Clear();//bir önceki önerileri sil
    suggestdoc.Load(suggesturl + System.Web.HttpUtility.UrlEncode(comboBox1.Text));//xml yükle
    suggestdoc.PreserveWhitespace = false;  //boşlukları gör
    XmlNodeList root = suggestdoc.GetElementsByTagName("suggestion");//önerileri nodelist e al
    foreach (XmlElement tek in root)//döngüye gir her bir eleman için işlem yap
    {
        string suggest = tek.Attributes["data"].Value;//öneriyi stringe at
        colect.Add(suggest);//öneriyi öneri koleksiyonuna at
    }
    comboBox1.AutoCompleteCustomSource = colect;//koleksiyonu referans et
    comboBox1.Select(comboBox1.Text.Length,comboBox1.Text.Length);
}
getsuggestions methodunda urlencode isimli bir method var. Onun için ise referanslardan System.Web' i ekleyin. Yukarıdaki kodlar ile Google önerilerini combobox'da gösterebilirsiniz. Youtube için ise suggesturl değişkenini aşağıdaki url ile değiştirin.
string suggesturl = "http://suggestqueries.google.com/complete/search?hl=en&client=youtube&xml=true&ds=yt&q=";
Bu da son halinden bir görüntü.

1 yorum:

RMx dedi ki...

Güzel olmş bak :) autocomplette son zamanlar bayağı tutulmaya başlandı. C# desteği daha bi güzel olmş bro.

Yorum Gönder

Yorumlarınızı adsız olarak yapmamanız konuya olan ilgi ve samimiyetinizi göstericektir