Bu yazımızda Web User Control yapılarından bahsediyor olacağız. Nedir bu User Control? diye soracak olursanız, User Control aslında hepimizin her zaman kullandığı Toolbox menüsünden sürükleyip forma bıraktığımız herhangi bir nesnenin kullanıcı tarafından biçimlendirildiği halidir.Masaüstü uygulamalarında veya web uygulamalarında kullanıcı tarafından istenilen şekilde tasarlanan formdur da denilebilir.Biz bu yazımızda ASP.Net Web User Control yapısından bahsediyor olacağız.
User Contol, ASP.Net kontrol sarmalının en basit biçimidir.Aslında HTML ve arkada Code Behind (c#,vb..) birleşiminden oluşan .ascx uzantılı yapılardır.Her User Control kendi olaylarına sahip olup, hepsinin birer Page_Load olayı vardır.Normal bir web sayfası gibi tasarlanıp olayları yazılabilir. Fakat normal bir web formdan farkı, direk sayfa içinden çağırılamamasıdır.User Control yapılarının çağırılması ancak başka bir form içinden olabilir.Bunu şuna da benzetebilirsiniz, nasıl ki bir Textbox yada Combobox yapısına link verip çağıramıyorsak, bu yapıları bir web formun içine eklememiz gerekiyorsa aynı mantık.
User Controller aslında birer sınıftır ve bu sınıfa ait değişkenler olabilir, bu değişkenler User Controlün kullanıldığı formun değişkenleri ile birbirine karışmaz.Tasarlanan User Control proje aynı içindeki tüm web formlarda kullanılabilir,çünkü projeye eklenen bir sınıftır.Bu User Controlün başka web uygulamalarında kullanılabilmesi için web control library şeklinde tasarlanıp, dll oluşturmak ve ve farklı projeler için Toolbox yapısından oluşturduğumuz bu Web User Control yapısını eklemek gerekmektedir.Bu yapıldıktan sonra herhangi bir Textbox,Table veya Panel'den farkı olmadan kullanılabilecektir.
Avantajları :
1 - Programcının kendi ihtiyaçları doğrultusunda özelliştirilmiş kontroller yazabilmesini sağlar. Örnek olarak bir Textbox nesnesine sadece rakam girilebilmesi, ya da DateTime nesnesine başlangıç tarihi olarak bugünden önceki bir zaman diliminin girilememesi, veya ekrana belli formatlarda çıkartılacak bir Popup uyarı formunun tasarlanması verilebilir.Tüm bu kontroller defalarca tekrarlanarak yazılmak yerine User Control olarak 1 defa yazılıp, istenen sayfada bu yapı kullanılabilir
2 - Tamamen programcının hayal dünyasına kalmış bir şekilde, herhangi bir kısıtlamaya bağlı kalmazsızın tek başına bir nesne kontrolü için yazılabileceği gibi, birden fazla nesne kontrolü hatta belli standart form kontrolü olarak bile yazılabilir..Örneğin kullanıcı adı ve şifresi istenen ve bunu kontrol eden 2 textbox ve 1 butondan oluşan küçük bir form gibi.
3 - User Controller birbiri içerisinden çağırılabilir.Tasarlanan user control, başka user controllerde herhangi bi nesne olarak kullanılabilir.
4 - Bir user control, aynı web sayfası içinde birden fazla kullanılabilir.Bu herhangi bir karışıklığa sebep olmaz.Bunu bir formda birden fazla Label yada Textbox kullanabilmek gibi düşünebilirsiniz.
5 - ASP.Net User Controlleri Vb,C# farklı dillerde yazılabilir.
6 - User Control yapıları programcının kullanıcı ara birimini bölümlere ayırıp tekrar tekrar kullanabilmesine olanak verir.
User Control Oluşturabilmek İçin :
1 - Proje üzerine sağ tıklanıp Add - New Items - Web Form User Control seçilir ve isim verilerek kaydedilir.Bu işlem sonucunda .ascx uzantılı bir yapı oluştuğu görülür.
2 - Daha sonra bu yapı içerisine girilerek Toolbox kısmında herhangi bi nesne sürüklenip bırakılabilir yada HTML kodu ile eklenebilir, bu nesneye ait kontroller F7 ye basılıp Code Behind tarafında yazılabilir.
Örnek 1 :
Daha öncekilerden farklı olarak Devexpress kullanarak, herhangi bir sayfada kullanıcıya uyarı yada açıklama vermek amaçlı bir popup kontrol yazıyoruz.Üstteki adımları tekrarlayıp "ucPopControl.ascx" adında bir user control yazıp,Code Behind tarafında Show adında bir metod olusturarak, içine parametre olarak göndereciğim string alanın ekrana çıkmasını sağladım.
ascx :
Code Behind :
User Control yapımızı olusturduk.Şimdi bunu başka bir form içinde çağırabiliriz.Hemen projeye "Test.aspx" adında bir web form ekleyip, tasarladım user controlü sürükleyip bırakıyorum ve bu formun açılışta çıkmasını sağlamak için Page_Load da kontrolü çağırıp, içeriğini set ediyorum.
aspx :
Kontolü sayfaya sürükleyip bıraktıktan sonra sayfaya bu kontrolün Register edildiğini görebilirsiniz.
Code Behind:
Sonuç :
Yukarıdaki örnekte yapmış olduğum popup control yapısını artık tüm web sayfalarına sıradan bir nesne gibi, ister uyarı ister bilgilendirme amaçlı kullanabiliriz.
Örnek 2 :
Şimdi ki örneğimizde ise kullanıcı adı ve şifresini isteyen bir control tasarlayalım.Hatta bir önceki örnekte tasarladığımız User Controlü bu Control içerisinde kullanalım.Böylelikle User Control yapılarının birbiri içerisinden çağırılabilen kontroller olduğunu görebiliriz.
design:
ascx:
Code Behind :
Şimdi tasarladığımız bu User Control formunu web sayfası oluşturup kullanalım.Gerekli kontrolleri User Control kısmına yaptığımız için sayfanın code behind tarafında herhangi bir şey yazmama gerek kalmadan çalışacaktır.
aspx:
Sonuç :
Örnek 3 :
Son örneğimizde de kademeyi bir tık daha yükseltip, daha önce ki bir örnekte Repeater olarak kullandığım yapıya benzer Listview yapısı kullanarak herhangi bir siteye ait ürün resim ve özelliklerinin gösterilmesini sağlayan User Control tasarladım. Bu yapıda ürünlere ait resimler ve özellikler liste halinde gösterilecektir. Biz aslında bu listenin her bir Item'ını tasarlamış olacağız.
ascx:
Code Behind:
User Controlün, CodeBehind tarafında "ProductViewDataBind" adında bir metod yazıp, kontrolü kullanacağım yerden listeye bind etmek istediğim datayı parametre olarak yollamak istiyorum.
Şimdi bu tasarladığım User Control Formu, yeni bir web form oluşturup içine ekliyorum.Ekranda sadece bu listeyi göstermek amacında olduğumdan, tasarladığım user control nesnesini sürükleyip formun html tarafına bırakıyorum.
aspx:
Code Behind :
Yeni oluşturduğum formun code behind kısmında, eklediğim User Control nesnesini dolduruyorum.Eklediğim kontrole ait "ProductViewDataBind" metodunu çağırıp, ilgili dataları bind ettiğimi görebilirsiniz.
Sonuç :
Görüldüğü üzere ilgili klasöre 3 resim ekledim, ve bu resimlerin birer ürün resmi olduğunu düşünürsek, sitemizde ürün özelliklerini bu şekilde bir User Control tasarlayıp bunu farklı sayfalarda çağırarak gösterebiliriz.
Son olarak yaptığım örneklere ait Solution' u görmek isterseniz:
Hiç yorum yok:
Yorum Gönder