mehmetduran.com - Paylaşmak Güzeldir...
jQuery Ajax ile UserControl'leri Etkin Kullanma
Bu yazımda jQuery Ajax uygulamalarında UserControl'leri etkin olarak nasıl kullanabileceğimizden bahsedeceğim. Son dönemde yaptığım birçok işte bu yöntemi kullanıyorum ve oldukça kullanışlı, efektif uygulamalar ortaya çıkmakta. Daha önce burada, burada ve birkaç yazımda jQuery Ajax uygulamalarında UserControl'leri nasıl kullanabileceğimizden bahsetmiştim. Bu yöntemleri geliştirerek daha doğrusu UserControl'ü render eden metodu geliştirerek bu kullanma yöntemini daha etkin hale getirdim. Öyleki UserControl'e rahatlıkla çeşitli parametreler aktarabiliyoruz. Bu şekilde çok dinamik, efektif alanlar oluşturabiliriz. Şimdi nasıl yapacağımıza göz atalım.

Öncelikle yazacağımız kodlara göz atalım. Bu kodlar hazırladığım ve yazının devamında linkini bulacağınız örneğin kodlarıdır. Yani çalışır halini de görebilirsiniz.

// UserControlü Render Eden Metodumuz
public static string user_kontrol_oku(string adres, Dictionary<string, string> Ozellikler)
{
  Page page = new Page();
  UserControl ctl = (UserControl)page.LoadControl(adres);
  foreach (KeyValuePair<string, string> ozellik in Ozellikler)
  {
    ctl.Attributes.Add(ozellik.Key, ozellik.Value);
  }
  page.Controls.Add(ctl);
  StringWriter writer = new StringWriter();
  HttpContext.Current.Server.Execute(page, writer, false);
  return writer.ToString();
}
 
// Değerleri Kullanıcıdan Alan ve Render edilen UserControl'ü 
// jQuery Ajax ile Kullanıcıya Aktaracak Webmethod
[System.Web.Services.WebMethod]
public static string Oku(int Sayfa, int Adet)
{
  Dictionary<string, string> veriler = new Dictionary<string, string>();
  veriler.Add("Sayfa", Sayfa.ToString());
  veriler.Add("Adet", Adet.ToString());
  return user_kontrol_oku("~/UserControl1.ascx", veriler);
}
 
// UserControl
public partial class UserControl1 : System.Web.UI.UserControl
{
  protected void Page_Load(object sender, EventArgs e)
  {
    int Sayfa = int.Parse(Attributes["Sayfa"]);
    int SayfalamaAdeti = int.Parse(Attributes["Adet"]);
    /* Değerlere göre işlem yapılıyor ...*/
  }
}

Görüldüğü gibi kodlarımız böyle. Peki bu kodlar tam olarak ne yapıyor derseniz buradan görebilirsiniz. Örnekte sayfalama var ve sayfalama adeti kullanıcı tarafından belirleniyor. Bu değerleri ise kullandığımız metot ile UserControl'e aktarıyoruz (Attribute özelliği ile) ve dinamik bir uygulama geliştirmiş oluyoruz. Buna benzer olarak birçok alanda bu yöntemi kullanabiliriz. Örneğin filtreleme (arama) işlemlerinde, otomatik tamamlama, dinamik uygulamalarda bu yöntemi kullanarak çok daha efektif alanlar oluşturabiliriz.

İyi Çalışmalar.
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Asp.net MVC'de Özel ActionResult Oluşturma Bloğumda Kullandığım SiteMap Sınıfı Jquery E-book Jquery ve Ajax ile Edit Update İşlemleri Jquery ve Asp.net MVC ile Ajax İşlemleri
Yorumlar
Yorum Yaz
RSS Yorum Takibi
İbrahim KARA 03 Şubat Çarşamba 2010 12:05 #1
Kardeşim paylaşımın için teşekkürler buna benzer bir paylaşımda bulunmuştun facebox uygulaması olarak orda render ettiğin usercontrol facebox içinde açılıyodu.Sorum şu açılan o faceboxta tekrar bir html click olayı ile aynı şekilde başka bir usercontrolü faceboxa çağırıyorum ama altta olan facebox kapanıyor ikisininde aynı anda açık olması için ne yapabilirim. Teşekkürler şimdiden kardeşim.
Mehmet Duran 03 Şubat Çarşamba 2010 13:31 #2
Facebox uygulamasını geliştirenler bu şekilde geliştirmiş. Böyle olması da gayet mantıklı. Bu tarzda çalışan uygulamalarda aynı anda tek bir ekran oluşur. Burada ikinci işlemde yeni bir facebox açmak yerine açık facebox'ı kullanmak daha mantıklı olabilir.
Serkan 23 Şubat Salı 2010 13:47 #3
Yaw bir de örnek kodları koysaymışın süper olcekmiş. Yine de Ellerine sağlık. Teşekkür ederiz makalen için.
Mehmet Duran 23 Şubat Salı 2010 20:41 #4
Yazımda örnek kodlar var zaten. Bu kodları kullanarak ihtiyaca göre istediğin işlemi gerçekleştirecek bölümleri oluşturabilirsin. Eğer takıldığın yer olursa yardımcı olmaya çalışırım. Kolay gelsin.
Barış Geçer 08 Eylül Çarşamba 2010 17:21 #5
Öncelikle Yazınız için teşekkürler.Benim şöyle bir sorum olacaktı: Usercontrol'ü benzer yollarla sayfama ekliyorum(10-15 tane) ancak eklenecek tüm usercontrolleri etkileyecek olan anasayfada jquery kodum var.O kodu usercontroller eklendikten sonra tekrar çağırmama rağmen usercontroldeki nesnelere kod etki etmiyor.Bu yüzden bi sayfada aynı kodu 10-15 defa yazdırmak zorunda kalıyorum.Çözüm önerilerinizi bekliyorum.Şimdiden Teşekkürler.İyi Çalışmalar
Mehmet Duran 13 Eylül Pazartesi 2010 10:18 #6
Aynı şekilde örnekleri ben de yaptım. Burada ben tek bir fonksiyon kullanmıştım ve istediğim kontorlü getirerek işlem yapabiliyordum. Burada script fonksiyonlarını tek bir fonksiyon haline getirerek işlemlerini daha az kodla yapabilirsin. Ancak burada yazacağın fonksiyon parametrik olamlıki tüm işlemlerde bu fonksiyonu kullanabilesin.
Rasim Yılmaz 19 Ekim Salı 2010 18:02 #7
Merhabalar Mehmet bey, ben genellikle sitelerimde birşeyler listeliyeceksem ve bu listelediklerim görsel olacaksa, bir gridview içerisine item template olarak bir webusercontrol gömerim ve bu webusercontrolün propertylerine id isimli bir property tanımlarım sonrada gridviewi bu idlerle doldurur html kısmındanda Eval Container ile gelen idleri webusrcontrollere aktarırım gridviewda bu usercontrolleri sayfaya basar. Makalelerinizi okudum fakat usercontrolu verilerle.
Mehmet Duran 19 Ekim Salı 2010 18:12 #8
@Rasim, merhaba. Öncelikle yaptığın örneğin aynısı olmasa da sonuç olarak aynı görvi yapan sistemi ben de kullanıyorum. Ancak burada işlem biraz farklı. Çünkü usercontrol'ü burada Ajax işlemlerinde kullanıyoruz. Yani kullanıcı tarafından çeşitli değerleri alıp usercontrol'e aktarıp sonuçları Ajax ile elde ediyoruz. Buradaki mantık ile söylemiş olduğunuz biraz farklı.
Rasim Yılmaz 19 Ekim Salı 2010 23:31 #9
Çevap için çok teşekkürler bana benim dururmum la ilgili birkaç referans ve örnek göstermen mümkün mü acaba? SAygılar
Rasim Yılmaz 20 Ekim Çarşamba 2010 09:09 #10
Birde sizin bu örnekte verileri user controlün içinde database den çekip ekrana basılıyor, eğer öyle ise javascriptin içerisindeki ilk fonfsiyon nereden biliyor sayfaya 10 tane basıldığını? Custom paging mi yapıyorsunuz?
Mehmet Duran 22 Ekim Cuma 2010 08:53 #11
Söylediğin gibi bir örnek var mı hatırlamıyorum ama senin söylediğin gibi aynı mantıkla verileri listeliyorum. Bunun için ilk başlarda repeater kullanıyordum ancak daha sonra direk döngülerle verileri düzenli biçimde oluşturmaya ve yazdırmaya başladım. Mantık olarak template olayı ile aynı.
Mustafa 18 Aralık Cumartesi 2010 22:30 #12
UserControlün içinde >script type="text/javascript"< alert('uyari');>/script< şeklinde bir kod koydum varsayalım UserControlü sayfaya eklediğimde bu kod çalışmıyor nedeni nedir acaba?
Mehmet Duran 06 Ocak Perşembe 2011 11:08 #13
@Mustafa, user kontrolü eklemiş olduğun sayfanın kaynağında veya Ajax ile kontrolü render ediyorsan elde ettiğin string'de yazdığın kısmın doğru biçimde olduğundan emin olmalısın. Aksi halde çalışmaması için hiçbir sebep yok. Benzer şeyleri birçok kez kullandım.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Kimse sana senden iyi öğüt veremez.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009