ASP.NET AJAX / ICallbackEventHandler kullanarak Takip devlet

oy
9

Bir ASP.NET AJAX sayfasında durumunu korumak ile ilgili bir sorun var. Kısa versiyon: Hiçbir eyalet zaman uyumsuz çağrı sırasında yapılan sunucuyu değiştirir yansıtmak için, bir zaman uyumsuz geri arama yapıldıktan sonra sayfa ViewState güncellemek için bir yol gerekir.

Bu yaygın bir sorun gibi görünüyor, ama ben açıklamak için benim senaryoyu anlatırlar:

yani yetenek sürüklemek ve sütunları ve satırları düşmesi - Biraz JavaScript geliştirmeleri olan bir ızgara gibi kontrole sahip. bir sütun veya satır yeni bir pozisyona getirildiği zaman, bir AJAX yöntemi ( OnColumnMoved ya da OnRowMoved) kontrol sunucu tarafı bildirir ve karşılık gelen bir sunucu tarafı olayı için çağrılır.

ASP.NET AJAX, varsayılan olarak, istek olarak sayfanın tamamını göndermek çağırır. sayfa tam yaşam döngüsü geçer Bu şekilde, Görünüm durumu kalıcıdır ve RaiseCallbackEvent yöntemi çağrılmadan önce denetimin devlet geri yüklenir.

Ancak, AJAX çağrı sayfasını güncellemek olmadığından, ViewState yansıtan orijinal sütun veya satır taşındı sonra bile, kontrol durumunu. Bir istemci tarafı eylemi gerçekleşir ikinci kez Yani, AJAX isteği sunucuya gider ve sayfa ve kontrol yansıtacak şekilde geri tekrar inşa edilir birinci kontrolün durumunu, ilk sütun veya satır sonra değil devlet taşındı.

Bu sorun birçok etkileri kadar uzanır. Mesela biz kılavuza yeni bir öğe eklemek için bir istemci tarafı / AJAX eylemi varsa ve sonra bir satır istemci tarafında birden az öğe ile, ızgara inşa edilmiştir sunucu tarafı sürüklenir.

Ve nihayet & en ciddiye belirli örneğin, biz üzerinde etki gerçek veri kaynak nesne sayfa ViewState saklanır. Bu, kullanıcının üzerinden destek eğer ya çok manipülasyonlar sonra DB kararlı ya da atılmalıdır manipüle verilerin bir durum bilgisi kopyasını tutmak izin vermek için bir tasarım karardı. Yani değiştirmek çok zordur.

Yani, yine, AJAX yöntemi ateşlenir sonra sayfa ViewState Geri aramada güncellenmesi için bir yol gerekir.

Oluştur 05/08/2008 saat 14:52
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
1

Zaten yine etrafında ViewState karıştırma ediyorsanız, siz de bir UpdatePanel kullanabilir. Onun kısmi geri yayınları olacaktır otomatik olarak sayfanın ViewState güncelleyin.

Cevap 07/08/2008 saat 17:19
kaynak kullanıcı

oy
1

Bu blog yazısı kontrol edin ICallbackEventHandler ve ViewState Tweaking . Yazar, karşılaştığınız çok durum karşısında gibi görünüyor:

ICallbackEventHandler kullanırken Yani geri aramalar için güncellenmiş devlet yönetimi hiç aşmak için iki engel var. İlk salt okunur görünüm durumu sorundur. Diğer aslında geri arama tetikleme önce kullanıcı sayfasına yaptığı değişikliklerin kayıt olan.

Bunu çözmek için nasıl yaptığı önerileri için blog yayınına bakın. Ayrıca, bu kontrol forum sonrası yanı aynı sorun anlatılır.

Cevap 05/08/2008 saat 15:25
kaynak kullanıcı

oy
0

Eğer yerleşik ASP.NET AJAX UpdatePanel aynı şeyi yapar bunun için özel bir denetim, neden kullanacağınızı anlamıyorum.

Bu sadece, daha karmaşık hale getiriyor size daha az destek verir ve daha zor diğerleri uygulamanızda çalışmasını kolaylaştırıyor.

Cevap 08/08/2008 saat 05:56
kaynak kullanıcı

oy
0

Birlikte oldukça şık çözüm buldu Telerik'ın RadAjaxManager . Oldukça güzel, esasen, bir geri gönderme çağırmak ve daha sonra bu geri gönderme uyumsuz gerçekleştirildikten sonra yeniden çizilmelidir her kontrolünü kayıt olabilir, her denetimi kaydetmek çalışır. RadAjaxManager zaman uyumsuz geri gönderme sonra DOM güncelleme ve ViewState ve tüm etkilenen kontrolleri yeniden. Yansıtıcı içinde bir göz alarak sonra, kaputun altında küçük kludgy görünüyor, ama zaman amaçlarına uygun.

Cevap 08/08/2008 saat 05:18
kaynak kullanıcı

oy
0

Aslında sağlanan bu bağlantıların her iki bulundu, ancak onlar sadece bunu çözme değil, sorunu açıklayan da dikkat çekildi. Gerçekten yalnız ViewState hususlar bırakın ve sadece yapılıyor ne için kanca gerekir ... blog yayınına yazarı farklı bir ViewState sağlayıcı kullanarak bir geçici çözüm önerir, ancak ne yazık ki bu durumda bir olasılık değildir kutudan dışarı.

Cevap 05/08/2008 saat 15:54
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more