Asp.net MVC Jquery UI autocomplete

3 Tem

JQuery kütüphanesinin sunduğu güzel bir özelikte autocoplete özelliğidir.  Yani bir html input text içerisine yazmaya başladığımızda bize bazı öneriler sunan bir özelliktir. Arama motorlarında sıklıkla gördüğümüz öneri listeleri, bize fikir verebilir.

Bu işlemi gerçekleştirmek için öncelikle, JQuery tarafından kullanılacak olan action metodun hazırlanması gerekmektedir.


public class HomeController : Controller
{
     public ActionResult Index()
     {
          return View();
     }

     public ActionResult Search(string term)
     {
         var data = names.Where(m => m.Contains(term))
                         .Select(m => new { label = m });

         return Json(data, JsonRequestBehavior.AllowGet);
     }

     private List<string> names = new List<string>
     {
         "adana",
         "antalya",
         "ankara",
         "trabzon",
         "tokat",
         "istanbul",
         "izmir",
         "içel",
     };
}

Bizim kullanacağımız metod Search action metodudur.  Yani text kutusuna bir giriş yaptığımızda, JQuery otomatikmen Search() metoduna gelerek, girdiğimiz yazıyı names listesinden arayarak bize sonuçları getirecektir. Canlı uygulamalar için buradaki gibi bir listeyi kullanmak yerine, veritabanına erişerek gerçek verileri alabiliriz.

Şimdi de Index view sayfasına giderek bir text kutusu oluşturarak devam edelim.


<h2>Test Page</h2>

<script type="text/javascript">

$(function () {

       $(":input[data-autocomplete]").each(function () {

            $(this).autocomplete({
                source: $(this).attr("data-autocomplete")
            })
      });

});

</script>

<div>
<label>Arama</label>
<input type="text" data-autocomplete="@Url.Action("Search","Home")" />
</div>

Index view sayfamızın içeriği yukarıdaki gibi olmalıdır. Ne yaptığımıza biraz değinelim.

Öncelikle $(“:input[data-autocomplete]”) şeklinde bir multiple selector kullanarak tüm autocomplete property olan elementleri aldık. Daha sonra, bu elementlerin içerisinde each() metodu ile gezintiye çıktık. Autocomplete mekanizması, source(veri kaynağı) ihtiyacı olan bir kontrol olduğundan, hangi text input’a autocomplete özelliği vereceksek ona data-autocomplete adına bir property tanımlıyoruz. Ardından bu özelliğe vermek istediğimiz kaynağı belirtiyoruz. Biz burada Home controller sınıfının Search action metodunu belirtiyoruz. Bu sayede input texte yazmaya aşladığımızda Search metodu otomatikmen tetikleniyor.

Yukardaki şekildeki sonucu elde etmiş oluyoruz.

JQuery Bildirim Paneli Hazırlama İşlemi

3 Tem

Web dünyasına Javascript’in gücünü gösteren kütüphane olan JQuery, artık geliştiricilerin gözdesi. JQuery sayesinde neler yapılmıyor ki. Özellikle sosyal paylaşım sitelerinde sıklıkla göze çarpan bildirim panelleri benim de dikkatimi çekmedi diyemem. Hemen klavyenin başına geçerek bir iki deneme yapmaya karar verdim ve güzel bir sonuç çıktı ortaya. Dilerseniz beraber inceleyelim.

Web sayfalarında sağ veya sol panellerde, son bildirimleri kayan yazılar şeklinde efektlendiren bir demo yapmaya çalışalım.

Bu işlem için gereksinimimiz bir jquery kütüphanesi referansı ve kodlama için bir ortam. Ben bu uygulama için notepad aracını seçtim. Notepad içerisine html döküman oluşturacak kodları girerek işe başladım ve ardından jquery kodlarını akledim.


<script>

   $(function () {
       setInterval("updateShouts()", 3000);
   });

    function updateShouts() {
       $('#foo').prepend('<div style="display: none;">Yeni içerik.'+Math.random()+'<p><a href="#">İçerik linki</a></p></div>');

       $('#foo').find(".newContent:first").slideDown();

       $('#foo .newContent:gt(5)').remove();
}

</script>

<div id="foo"></div>

JQuery ile bir timer nesnesi kullanılarak, 3 saniyede bir yeni içerik oluşturularak,  panel içerisine eklenmektedir.

Buraya kadar olan işlemler, html bilgisi ve javascript bilgisi ile halledilebilecek şeklide gelişmiştir. Veriler elle üretilmiş ve animasyona sunulmuştur. Tabi gerçek hayat hikayelerinde, yukarıda tanımlanan updateShouts() metodu bir action metoda giderek veri alacak şekilde düzenlenip canlı bir uygulama da hazırlanabilir. Hatta action metod, outputcache mekanizmasıyla desteklenip, gereksiz yere veritabınına gitmeden, direk cache verilerine erişilebilir. Bu da hızda ciddi bir artış sağlar.

Sonuç olarak  yukarıdaki şekildeki gibi bir panel elde edilebilmektedir.

Jquery slide bildirim paneli çalışan uygulamasına buradan ulaşabilirsiniz.

Javascript ile Doğrulama Uyarısı

8 Ara

Microsoft .Net platformunda desktop veya silverlight ile uygulamalar yaparken kullanıcıya evet/hayır tarzı seçimleri yaptırmak gerekebiliyor. Bu seçimleri bir mesaj kutusu yardımıyla halletmek mümkün olabilmektedir. Ancak web ortamında sunucu tabanlı uygulamalarda bu tarz seçenekler olmadığından en uygun yöntem javascript nimetlerinden yararlanmak olacaktır.

Örneğin bir linke veya butona tıkladığımızda “Bunu yapmak istediğinizden emin misiniz?” gibi uyarılar  verdirmek isteyebiliriz. Aşağıdaki örnekte işleme devam etmek veya etmemek konusunda kararı verdirip ikinci adımı belirleyebileceğimiz bir örnek verilmiştir.


<html>
<head>
<script type="text/javascript">

    function ShowConfirm() {
        var confirmation = confirm("Emin misiniz?");
        if (confirmation) {
          alert("Kayıt Silinmiştir.");
        }
        return confirmation;
    };

</script>

</head>
<body>

<h1>Alert uygulaması</h1>

<a href="http://www.bayramucuncu.com"  onclick="return ShowConfirm();">KAYDI SİL</a>

</body>
</html>

Yukardaki örnekte Kaydı sil adında bir link bulunmakta ve linke tıklandığında kullanıcıya
emin olup olmadığı sorulmaktadır.

Umarım faydalı olmuştur herkese iyi çalışmalar.