ASP.NET Web Forms kullananlar bilirlerler update panel içerisinde bir postback işlemi gerçekleştirdiğimizde (butona tıklama, dropdown seçme işlemi vb.) update panel içerisinde kullanılan javascript ve jquery kodlarımız çalışmaz hale gelir. Hatta jquery ile checkboxlarımıza vs. stil verdiysek onlarda kaybolur ve tüm hevesimiz kaçar :(
Yıllardır yaşadığım bu problemle ilgili nihayet bir çözüm bulabildim, AspSnippets üzerindeki şu makale de çözümünü anlatmışlar. Bende kendimce Türçe’ye çevirerek açıklayacağım.
Yaşadığımız bu sorunun nedeni sayfa postback olduktan sonra sayfanın tarayıcıda tekrar yüklenmesi ve bu yükleme işlemi yaparken de updatepanel’e javascript kodlarımızı tanımlamadığımız için bu kodların çalışmamasından kaynaklanıyor. Çözüm olarak yazdığımız javascript methodlarının aynılarını birde updatepanel postback işlemini gerçekleştirdikten sonra çalıştıracağız.
Örnek vermek gerekirse;
[javascript]<script type="text/javascript">
// Sayfa yüklendiğinde çalışan kodlarımız bunlardır.
$(function () {
$("#dvAccordian").accordion();
$("#tabs").tabs();
});
// Aynı methodları postback işlemi gerçekleştiğinde aşağıdaki şekilde çalıştırıyoruz.
var prm = Sys.WebForms.PageRequestManager.getInstance();
if (prm != null) {
prm.add_endRequest(function (sender, e) {
if (sender._postBackSettings.panelsToUpdate != null) {
$("#dvAccordian").accordion();
$("#tabs").tabs();
}
});
};
</script>[/javascript]
2 yorum
Sinan hocam merhabalar,
Update panel ile ilgili bir sorum olucak sizlere,
bir adet repeater’ım var update panel ile butona tıkladığımda repeater’ın içeriğini güncellemem gerekiyor. bu işlemleri sorunsuz şekilde yaptım ancak. Hazır olarak kullanmış olduğum script kütüphaneleri sayfanın ilk yüklenme anında geliyor. update paneli tetikleyen butona tıkladığımda ortadan kayboluyor. script dosyalarını update panel çalıştığında da yükleme ile alakalı yardımcı olabilir misiniz. İsterseniz mail yolu ile iletişime geçebiliriz.
İyi günler
Merhaba,
if (sender._postBackSettings.panelsToUpdate != null) {
Büyük ihtimalle o kütüphaneler aktif olmak için bir function çağırıyordur. O function’ı yukarıdaki alan içerisinde çağırırsanız işinizi görür diye düşünüyorum.
İkinci alternatif olarak yine bu alan içerisinde ilgili script dosyalarını dinamik olarak tekrar eklemeyi deneyebilirsiniz.