6 Ağustos 2012 Pazartesi

Page, UserControl LifeCycle ve Veri Doldurma İşlemleri

Selamlar,

Asp.Net uygulaması geliştiren birçok developer mutlaka page ve user life cycle’larla ilgili bir dokuman, makale veya forum entry’leri okumuştur.

User control içerisinde yer alan dropdown list’e SelectedValue ataması yaparken, atamaya çalışılan nesne Items içerisinde yer almıyor hatası ile hemen hemen hepimiz karşılaşmısızdır.

 

Bu tarz hataları azaltmak ve developer’ın çözüm bulmakla vakit kaybetmesini engellemek için Bimar içerisinde geliştirdiğimiz projelerde temel prensiplerimiz şunlardır.

 

1)      Sayfada basit bir dropdownlist var.

a.       Sayfanın load metodunda dropdownlist itemlar doldurulur. Doldurma işlemi !IsPostBack if bloğu içerisinde yapılmalıdır. Böylelikle her postback’te gereksiz işlem yapılmaz.

b.      Itemlar doldurulduktan sonra istenirse selectedvalue set edilir.

2)      User control içerisinde dropdownlist var ve bu kontrol sayfada kullanılıyor (örnek kullanıcı seçim user controlu)

a.       User controlun init metodunda dropdownlist itemlar doldurulur. Doldurma işlemi !IsPostBack if bloğu içerisinde yapılmalıdır. Böylelikle her postback’te gereksiz işlem yapılmaz.

b.      Sayfanın load metodunda, istenirse usercontrol içerisindeki dropdown’ın selected value’su set edilir.

User controlun init metodu Page’in load metodundan önce, load metodu ise Page’in load metodundan sonra çalışır.

3)      User control içerisinde load on demand control (radcombo, autocomplete extender textbox vb. ) var ve bu kontrol sayfada kullanılıyor.

a.       User controlun init metodunda herhangi bir doldurma işlemi yapmaya gerek yok.

b.      Sayfa ilk açıldığı zaman bu kontrolde bir değer gösterilmek isteniyorsa, usercontrol’e ilgili PK değerini alan ve datayı saklandığı yerden getirip ekrana basan bir metot yazılmalı.

 

Biz bu işlemleri daha anlamlı metotlarda görebilmek için base classlar oluşturduk (Page ve UserControl’lerin). Bunların Load metotlarını override yaptık ve içerisinden ilgili metotların virtual signature’a sahip olanlarını çağırdık. Virtual metotların içlerini child Page ve UserControl’lerde doldurduk. Böylelikle developer’ın IsPostBack gibi kontrolleri yapmadan kod yazmasını sağladık.

 

İyi çalışmalar

 

Serkan

Hiç yorum yok:

Yorum Gönder