Search

AJAX ile Insert, Update ve Delete İşlemleri



5 yorum

AJAX ile Insert, Update ve Delete İşlemleri

ajaxBu yazımda Ajax ve Web Methodları kullanarak veri tabanındaki verilerle nasıl işlemler yapacağımızdan bahsedeceğim. Veritabanı olarak araçlarımda paylaşmış olduğum FirmaDB kullanacağım. Veritabanı işlemlerinde Entity Framework mantığı kullandım.
User Controller aracılığı ile verileri sayfama çağıracağım ve üzerinde işlemleri web methodlar aracılığı ile gerçekleştireceğim.
Yazıyı hazırlarken özellikle Mehmet Duran'ın blogundaki yazıdan yararlandım. Ayrıca Mehmet Duran'a yararlı paylaşımlarından dolayı teşekkür ediyorum.
Anlatımı kodlar üzerindeki yorumlar aracılığıyla yaptım. Takıldığınız yerler olursa sorabilirsiniz, en kısa zamanda cevap vereceğim.

Anlatımım AsynUygulama.aspx sayfam ve AsynUserControl.ascx adında bir usercontroller arasında geçecek.

AsynUygulama.ASPX:
 
 

AsynUygulama.JS:
$(document).ready(function () {
  usercontrolgetir("AsynUserControl.ascx"); //usercontrol çağırılır
});

//User Control içeriği getiriliyor
function usercontrolgetir(usercontrol) {
 $.ajax({
   type: "POST",
   url: "AsynUygulama.aspx/UCgetir",
   data: "{usercontrol:'" + usercontrol + "'}",
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (msg) {
       $("#kayitalani").html(msg.d);
      }
  });
}

//Yeni Kayıt Ekleme
function yenikayit() {
 $.ajax({
   type: "POST",
   url: "AsynUygulama.aspx/yeni",
   data: "{kayit:'" + $("#kayittext").val() + "'}",  //kayittext id'sine sahip olan text'in içindeki değerini web method'a yolluyoruz.
   contentType: "application/json; charset=utf-8",
   dataType: "json",
   success: function (msg) {
     usercontrolgetir("AsynUserControl.ascx");//tablonun tekrar dolmasını sağlıyoruz.
     }
  });
}

AsynUygulama.aspx.CS:
  /// 
  /// User Control Getirilecek
  /// 
  /// 
  /// 
      [System.Web.Services.WebMethod]
      public static string UCgetir(string usercontrol)
       {
         string sonuc = "";
         Page p = new Page();
         UserControl u = (UserControl)p.LoadControl(usercontrol);
         u.LoadControl(usercontrol);
         p.Controls.Add(u);
         StringWriter sw = new StringWriter();
         HttpContext.Current.Server.Execute(p, sw, false);
         sonuc = sw.ToString();
         sw.Close();
         return sonuc;
      }

   /// 
   /// Yeni Kayit Ekleme
   /// 
   /// 
   /// 
      [System.Web.Services.WebMethod]
      public static string yeni(string kayit)
      {
        FirmaEntities FirmaEF = new FirmaEntities();   //Entity nesnemizi oluşturuyoruz.
        Birim birimobj = new Birim() { BirimAdi = kayit }; //Entity'e ekleyeceğimiz objeyi oluşturuyoruz.
        FirmaEF.Birim.AddObject(birimobj); //Entity'e kayıt ekliyoruz.
        FirmaEF.SaveChanges(); //Entity üzerindeki değişiklikleri kaydediyoruz.
        return "Kayıt Başarılı";
      }

   /// 
   /// Kayit Silme
   /// 
   /// 
   /// 
     [System.Web.Services.WebMethod]
      public static string sil(Int32 id)
      {
        FirmaEntities FirmaEF = new FirmaEntities();   //Entity nesnemizi oluşturuyoruz.
        Birim birimobj = FirmaEF.Birim.FirstOrDefault(x => x.BirimID == id); //Birim tablosunda bulunan ve BirimID'si fonksiyondan gelen id'ye eşit olan kaydı getiriyoruz.
        FirmaEF.DeleteObject(birimobj); //Getirdiğimiz kaydı siliyoruz.
        FirmaEF.SaveChanges();  //Değişiklikleri kaydediyoruz.
        return "Kayıt Silindi";
      }


   /// 
   /// Guncelleme Alani Olusturur
   /// 
   /// 
   /// 
      [System.Web.Services.WebMethod]
      public static string guncellemealani(Int32 id)
      {
         string sonuc = "";
         FirmaEntities FirmaEF = new FirmaEntities();
         var kayital = FirmaEF.Birim.FirstOrDefault(x => x.BirimID == id);
         /* sonuc için açıklama: 
          *ilk sutun(td) içinde bir textbox oluşturuyoruz. 
          *ikinci sutun(td) içindeyse button oluşturuyoruz ve bu buton sayesinde guncelleme işleminin gerçekleşeceği guncellemeislemiyap method'una bağlanıyoruz.
          *guncellemeislemiyap için gerekli olan textbox içine girilen değeri ve id'sini yolluyoruz.
          */
          //Alttaki sonuc icine alınan yorum satırını açarak kullanın
          // sonuc = "
          // ";
            return sonuc;
        }


     /// 
     /// Guncelleme Isleminin Gerceklesmesini Saglar
     /// 
     /// 
     /// 
     /// 
      [System.Web.Services.WebMethod]
       public static string guncellemeyap(Int32 id,string kayit)
      {
         FirmaEntities FirmaEF = new FirmaEntities();
         var kayital = FirmaEF.Birim.FirstOrDefault(y => y.BirimID == id);
         kayital.BirimAdi = kayit;
         FirmaEF.SaveChanges();
         return "guncelleme basarili";
      }

AsynUserControl.ASCX:


AsynUserControl.JS:
 //Guncelleme Alanı Oluştur
  function guncellemeolustur(id) {
     $.ajax({
        type: "POST",
        url: "AsynUygulama.aspx/guncellemealani",
        data: "{id:" + id + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
           $("#" + id).fadeOut("slow", function () {
                 $(this).html(msg.d)
            }).fadeIn("slow");
         }
      });
    }

  //Guncelleme Islemi Gerceklestirir
   function guncelleislemi(id, kayit) {
     $.ajax({
        type: "POST",
        url: "AsynUygulama.aspx/guncellemeyap",
        data: "{kayit:'" + kayit + "', id:'" + id + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            usercontrolgetir("AsynUserControl.ascx");
          }
      });
   }

  //Kayıt Silme
    function silkayit(id) {
      $.ajax({
        type: "POST",
        url: "AsynUygulama.aspx/sil",
        data: "{id:" + id + "}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (msg) {
            usercontrolgetir("AsynUserControl.ascx");
          }
     });
  }

AsynUserControl.ascx.CS:
 protected override void OnLoad(EventArgs e)
   {
      FirmaEntities FirmaEF = new FirmaEntities(); // Entity nesnemizi oluşturuyoruz
      Repeat1.DataSource = FirmaEF.Birim.ToList(); //Repetear'a birim tablosunu bağlıyoruz         
      Repeat1.DataBind();
    }

Benim ekran görüntüm aşağıdaki gibi, tüm kontroller hızlı bir şekilde çalışıyor.

5 yorum:

Ilker doğan at: 12 Nisan 2013 02:26 dedi ki...

Güzel paylaşım dostum..

egvrcn at: 12 Nisan 2013 03:28 dedi ki...

Teşekkürler İlker

Yunus Emre Altınay at: 6 Kasım 2013 02:01 dedi ki...

Merhaba öncelikle bu yazı için teşekkürler. Faydalı bir yazı olumuş.

Birşey sormak istiyorum bu şekilde ajax kullanımında verileri gönderirken eğer kullanıcı '(tek tırnak) yazarsa hata ile karşılaşıyor yada boş değer gönderiliyor bu gibi durumlarda nasıl önlem alınmalı. UserControllere bir başkasının ulaşma şansı varmı güzenlik açığı oluşturur mu? Biliyorsanız cevap yazarsanız sevinirim.
Şimdiden teşekkürler.
İyi günler.

muratti at: 29 Mayıs 2014 09:36 dedi ki...

hocam resim nasil yukleyebiliriz

muratti at: 30 Mayıs 2014 05:34 dedi ki...

Yusus Slm , tırnak vs. işlemlerini engellemek için temizleme fonksiyonu yazarak textbox tan aldıgın degeri temiz bir şekilde göndermen lazım... örnek veriyorum

function Temizle(metin){

var gelenMetin=metin.replace("
"," ");

var gelenMetin=metin.replace("?"," ");

return gelenMetin;

}

kullanımı:

var adı=Temizle($("txtAdı"));

kullanım tam olrak böyle bir şey olmalı yanlış da hatırlıyor olabılirim siz mantıgını anladınız
sanırsam...

Yorum Gönder

Check Page Rank
DMCA.com