Makale Özeti

3 parçaya bölünmüş bu makalede size alternatif bir AJAX teknolojisi olan, Michael Schwarz tarafından hazırlanmış ve kullanıma sunulmuş, tamamen ücretsiz olan AjaxPro’ dan bahsedeceğim. Öncelikle bu makaleyi hazırlamamda ki temel amaç, İngilizce bilgisi pekiyi olmayan programcılara sade bir dilde bu aracın özelliklerini size anlatmak ve küçük bir örnek ile bunu pekiştirmek.

Makale


Bir önceki makalede kategorileri oluşturup, makalelerimizin başlıklarını listeletmiştik. Şimdi ise bu başlıklara tıklanıldığında çalışacak yordamları inceleyeceğiz.

 

Ajax.js dosyamızı oluşturmuştuk, ve bu dosyamızın içeriğini artık kodlayabiliriz.

 

Ana sayfada listelediğimiz makale başlıklarının onclick yordamlarına, SubmitThis fonksyonunu çalıştırmalarını sölemiştik.

 

SubmitThis fonksyonumuzu aşağıdaki şekilde kodladım.

 

function SubmitThis(val)

    {

        var nesne;

       nesne = val;

       document.getElementById("lblEkle").innerHTML = "<span style='cursor:pointer' onclick=SubmitYorumGonder('" + nesne + "');>Yorum Gönder</span>" ;

        AjaxDeneme.AjaxClass.MakaleGoster(val,callback_Makale);

        AjaxDeneme.AjaxClass.MakaleOkunma(val).value;

        AjaxDeneme.AjaxClass.Yorumlar(val,callback_Yorum);

     }

 

Bu fonksyonun yaptığı işi tanımlayacak olursak;

1-       Fonksyona gelen değeri nesne adlı obje ye aktarıyor

 

2-       Ana sayfamızdaki lblEkle labelına yorum göndermek için yeniden içerik atıyor ve tıklanıldığında SubmitYorumGonder fonksyonuna makale ID sini göndermesinin gerektiğini belirtiyor. Yorum Gönder etiketinin gösterileceğini belirtiyor

 

 

3-       İşte burada AjaxPro devreye giriyor ve AjaxClass.vb dosyasındaki, AjaxDeneme namespace imiz içindeki AjaxClass içindeki MakaleGoster fonksyonunu çalıştırmasını ve ardından Ajax.js dosyasındaki callback_Makale fonksyonunu çalıştırmasını belirtiyor.

 

4-       Aynı şekilde makale okunma sayısını görmemiz için gerekli fonksyon ile makalenin yorumlarının gösterilmesi için gerekli olan fonksyonu çağırıyor.

 

Ajax.js dosyamızda bulunan diğer fonksyonları da yazalım

 

function callback_Makale(res)

    {

        document.getElementById("lblIcerik").innerHTML = res.value;

    }

 

function callback_Yorum(res)

    {

        document.getElementById("lblYorum").innerHTML = res.value;

    }

 

Bu fonksyonlar, lblIcerik adlı label a ve lblYorum adlı label a AjaxClass olarak oluşturduğumuz sınıfımızın bize döndürdüğü sonuçları bu labellara aktardı.

 

Şimdi AjaxClass.vb dosyamızın kodlarını oluşturalım.

 

<AjaxPro.AjaxMethod()> Public Shared Function MakaleGoster(ByVal MID As Integer) As String

            Dim bag As New baglanti

            Dim Cmd As New SqlCommand

            Dim Rdr As SqlDataReader

 

            bag.Bagla()

            Try

                With bag.Cmd

                    .CommandText = "Select  * From Makaleler  Where M_ID=@M_ID"

                    .Parameters.Add("@M_ID", SqlDbType.Int).Value = MID

                    Rdr = .ExecuteReader

                End With

                sonuc = ""

                Dim i = 0

                While Rdr.Read

                    i += 1

                    sonuc = "<span id=""" & i & """   class='text'><strong>" & Rdr("S_Adi") & "</strong><br><br>" & Rdr("S_Icerik") & "</span><br />"

                End While

                Return sonuc

 

            Catch ex As Exception

                Return ex.Message

            End Try

            Return True

            bag.Kes()

        End Function

 

Kodumuz gayet açık, Makaleler tablosundan bu fonksyona gelmiş olan M_ID ye göre tablomuzu sorguladık ve eğer bir değer dönmüş ise bunu Return metodu ile Ajax.js dosyasına geri döndürdü. Burada dikkat etmemiz gereken husus fonksyonun, AjaxPro.AjaxMethod()’ a ait olduğunu belirtmek.

 

Makalenin okunma sayısını işlemek için gerekli olan fonksyonumuzu da yazalım.

 

<AjaxPro.AjaxMethod()> Public Shared Function MakaleOkunma(ByVal MID As Integer) As String

            Dim bag As New baglanti

            Dim Cmd As New SqlCommand

            Dim Rdr As SqlDataReader

 

            bag.Bagla()

            Try

                With bag.Cmd

                    .CommandText = "Update Makaleler Set M_Okunma = M_Okunma + 1  Where M_ID=@M_ID"

                    .Parameters.Add("@M_ID", SqlDbType.Int).Value = MID

                    .ExecuteNonQuery()

                End With

                Return True

            Catch ex2 As Exception

                Return ex2.Message

                bag.Kes()

            End Try

            bag.Kes()

        End Function

 

Okunma sayısını da AjaxPro ile arttırdıktan sonra yorumları ekrana yazdıralım.

 

<AjaxPro.AjaxMethod()> Public Shared Function Yorumlar(ByVal MID As Integer) As String

            Dim bag As New baglanti

            Dim Cmd As New SqlCommand

            Dim Rdr As SqlDataReader

 

            bag.Bagla()

            Try

                With bag.Cmd

                    .CommandText = "Select  * From Yorumlar  Where M_ID=@M_ID"

                    .Parameters.Add("@M_ID", SqlDbType.Int).Value = MID

                    Rdr = .ExecuteReader

                End With

                sonuc = ""

                Dim i = 0

                While Rdr.Read

                    i += 1

                    sonuc = "<span id=""" & i & """   class='text'><strong>" & Rdr("Y_Ekleyen") & "</strong><br>" & Rdr("Y_Yorum") & "</span><br /><br />"

                End While

If i = 0 Then

                    sonuc = "Henüz yorum yapılmamış. İlk Yorumu siz ekleyin..."

                  End If

                Return sonuc

 

            Catch ex As Exception

                Return ex.Message

            End Try

            Return True

            bag.Kes()

        End Function

 

Yorumumuzun değerini de gönderdik ve makalemizi sonlandırmanın zamnı geldi artık.

 

Yorum eklemeyi de size bırakıyorum (: umarım size faydalı olacak bir kaynak olmuştur. Her türlü sorunuzu alper[at]guyildar.com adresinden bana ulaştırabilirsiniz. En kısa zamanda cevaplamaya çalışacağım.

 

Kolay gelsin…