Makale Özeti

Bu makalede bir custom dropdown kontrolü geliştireceğiz. Bu kontrol ListItem yerine bizim geliştirdiğimiz bir CustomColor nesnesi alacak ve renkleri görüntüleyecek...

Makale

ASP.NET 2.0'da Custom WebControl'ler - III
Custom nesne listeleyen bir DropDownList

Yiğit Özgül - yigitozg@yahoo.com 

Bu makalede bir custom dropdown kontrolü geliştireceğiz. Bu kontrol ListItem yerine bizim geliştirdiğimiz bir CustomColor nesnesi alacak ve renkleri görüntüleyecek...

CustomColor

Öncelikle CustomColor nesnemizi oluşturalim. Burada demo amaçlı olduğu için sadece bir Name property'si kullanacağız.
Simdi ColorDropDown class'ımızı oluşturup buna bir DropDown ile bir CustomColor generic listesi ekleyelim

ColorDropDown
ColorList

Listeyi encapsulate ettiğimiz property'de gözümüze

DesignerSerializationVisibility, PersistenceMode, MergableProperty

attribute'leri çarpıyor. Burada
  • DesignerSerializationVisibility designer tarafında Colors tagını tanımlayıp altına CustomColor nesnesi ekleyebilmemizi sağlıyor. Eğer bu attribute'un değerini Hidden olarak set ederseniz ve <Colors> tagini tanımlamaya calşırsanız "ASP.NET runtime error: The 'Colors' property cannot be set declaratively" hatasını alacaksınız.
  • PersistanceMode bu property'nin nasil persist edileceğini belirler. Attribute, InnerProperty, InnerDefaultProperty, EncodedInnerDefaultProperty değerlerinden birini alır. Biz Colors'in altına da nesneler ekleyeceğimizden inner property olarak tanımlıyoruz
  • MergableProperty bu property'nin "Properties Pane" de başka item'larla birleştirilerek gösterilip gösterilemeyeceğini belirtiyor
Sınıf tanımımızda ParseChildren attribute'una değinmenin vakti geldi. Bu attribute designer'da child olarak ColorDropDown altına eklenen nesnelerin parse edilip edilmeyeceğini belirler. ParseChildren(true) dediğimizde bizim eklediğimiz custom nesneleri parse edip bunları Custom listemize ekleyebilmek için AddParsedSubObject metodunu override etmemiz gerekiyor.

addParsedSubObject

Şimdi CreateChildControls metodumuzu yazalım.

CreateChildControlsMetodu

Bu adımdan sonra renkleri dropdown'a ekleceğimiz bir metod ile birlikte OnLoad fonksiyonunu override edelim.

onLoadAddColors

Şimdi de seçilen rengi alabilmek için System.Drawing.Color struct'ı dönen bir property yazalım.

selectedColor

Artık kontrolümüzü derleyip, referanslara ekledikten sonra sayfaya aşağıdaki gibi ekleyebiliriz

sampleDefTag

Çalıştırdığımızda aşağıdaki manzara ile karşılaşıyoruz.

ColorsOnDropDown

Ve seçilen rengi alıp alamadığımızı deneyelim.

selectedColorDisplay
ve sayfada
selectedColorDisplay


Bu makalede renkler üzerinden giderek DropDown'a custom nesne ekledik. Hayal gücünüz ve/veya gereksinimleriniz çerçevesinde siz bu örneği değişik uygulamalarda genişletebilirsiniz.

Yiğit Özgül - yigitozg@yahoo.com