ASP.NET Web Kontrollerine Bakış




http://graysmatter.codivation.com/content/binary/aspnet_webforms_tantrum.jpgASP.NET’in getirdiği en büyük gelişmelerden biri sunucu tarafında çalışan Web kontrolleridir. Web kontrolleri bir Web sayfasında verilerin gösterilmesi, tarihlerin seçilmesi ve metin kutularına girilen verilerin geçerliliğinin kontolü gibi işlevlerin kolayca sağlanabilmesi için tasarlanmışlardır. Web kontrolleri bildiğimiz basit form kontrollerinin (etiket, metin kutusu, buton …) yanısıra table, datagrid ve calendar kontrolü gibi bileşik kontrolleri de içerir.

Web kontrollerini yaratırken kullanılan yapı HTML kontrollerini yaratırken kullanılandan pek farklı değildir ve bu kontroller ASP.NET DLL tarafından çalıştırılır :

<asp:TextBox id=“TextBox1“ runat=“server“></asp:TextBox>

<asp:ListBox id=“ListBox1“ runat=“server“>

<asp:ListItem>Mustafa</asp:ListItem>

<asp:ListItem>Tarık</asp:ListItem>

<asp:ListItem>Gökay</asp:ListItem>

</asp:ListBox>

Bu kontroller kullanıcı tarafında çalışan HTML kontrollerine çok benzedikleri için öğrenilmeleri zor olmayacaktır. Örneğin yukarıdaki TextBox ve ListBox kontrollerinin HTML karşılıkları aşağıda gösterilmiştir :

<input type=“text“ name=“Text1“>

<select name=“ListBox2“ size=3>

<option>Mustafa</option>

<option>Tarık</option>

<option>Gökay</option>

</select>

ASP.NET sunucu kontrolleri kullanılarak bir web sayfasının programlanması oldukça kolaylaşacaktır. Birçok HTML kontrolüne runat=”server” özelliği eklenerek bu kontroller sunucu kontrolerine dönüştürülebilir. ASP.NET bu kontrollerin yanısıra birçok yeni kontrol de içermektedir. Bu kontrollere web kontrolleri denir ve bu kontroller programcının yazması gereken kod miktarını önemli ölçüde azaltacak kadar işi kendi kendilerine yapabilmekte ve yeni özellikleri bünyelerinde barındırmaktadır. ASP.NET sayfalarını hazırlarken web kontrollerini kulanmamız lehimize olacaktır.

Web kontrolleri geleneksel form kontrolleri (buton, metin kutusu …) ve table (tablo) gibi bileşik kontrollerin yanısıra tarih seçimi ve verilerin bir grid içerisinde gösterilmesi gibi sıkça kullanılan web sayfası elemanlarını da içermektedir. Örneğin kullanıcının bir metin kutusunu boş bırakmaması ve içine 100 ile 1000 arasında bir sayı girmesi isteniyorsa web sayfasına bu metin kutusunu kontrol eden bir RequiredFieldValidator ve RangeValidator eklenerek programcının bu işlevi sağlayan bir kod yazması engellenir. Programcının yapması gereken tek şey bu kontrolleri sayfaya eklemek ve parametrelerini girmektir.

ASP.NET sayfalarında kullanılan dört çeşit Web kontrolü vardır :

· Asıl kontroller. Bu kontroller basit HTML elemanlarına karşılık gelirler.

· Geçerlilik kontrolleri. Verilerin geçerliliğini test eden kontrollerdir.

· Zengin kontroller. Bu kontroller zengin bir arayüz ve işleve sahiptirler. Calendar ve AdRotater kontrolleri bu tip kontollerdir.

· Listeleme kontrolleri. Web sayfasında bilgilerin kullanıcılara daha kolay sunulabilmesini sağlarlar. Bu kontroller birçok web kontrolünün biraraya gelmesinden meyadana gelirler. Bir veri kaynağındaki verilerin bu kontrollere bağlanmasıyla gerekli HTML görüntüsü kullanıcılara kolayca sunulabilir.

Web kontrolleri System.Web.UI.WebControls ad uzayı içerisinde yer alırlar. Web kontrolleri asp: ad uzayı kullanılarak yaratılabilir. Bu ad uzayının aspx sayfası içine eklenmesine gerek yoktur. Örneğin aşağıdaki kod bir label web kontrolü yaratmaktadır :

<asp:Label runat=“server“>

ASP.NET web kontrolleri iç içe geçemezler ve iyi düzenlenmiş olmalıdırlar. Yani bir kontrol kapatılmadan başka bir kontrol yaratılamaz ve her kontrol kapatılmak zorundadır. Bir kontrolün kapanışı iki şekilde gösterilebilir :

<asp:Label runat=“server“ /> veya

<asp:Label runat=“server“></asp:Label>

Asıl Kontroller (Intrinsic Controls)

Bu kontroller standart HTML kontrollerinin ASP.NET karşılıklarıdır ve HTML kontrollerine alternatif olarak kullanılırlar. HTML kontrolleri nasıl kullanılıyorlarsa Intrinsic kontroller de o şekil kullanılırlar. Asıl kontrollerin HTML kontrollerinden en büyük farkı her web kontrolünün başına asp: ön ekinin konulmasıdır. Örneğin bir metin kutusu web kontrolü yaratmak için aşağıdaki kod kullanılır:

<asp:TextBox id=“TextBox1“ runat=“server“> </asp:TextBox>

Asıl (Intrinsic) kontrollerin sağladığı yararlar şunlardır:

· Benzer kontroller için standart isimlendirme sağlarlar.

· Tüm kontroller için ortak özellikler sağlarlar.

· Kullanıcının web gezginine özel HTML çıktısı üretirler.

· Kontrole özel kuvvetli tipli (strongly typed) özellikler içerirler.

Şimdi listelenen bu özelliklerin neler olduğunu daha detaylı inceleyelim.

Standart İsimlendirme

HTML kontrollerinde benzer kontroller için standart ve kararlı bir isimlendirme kuralı yoktur. Asıl kontroller bu sorunu ortadan kaldırmaktadır. Örneğin aşağıdaki satırlarda radio, checkbox ve submit HTML kontrolleri yaratılmaktadır :

< input type=“ radio“>

< input type=“checkbox”>

< input type=“submit”>

Bu kontrollerin herbirinin kullanım amaçları farklı olsa da hepsi birer input kontrolüdür. Farklı kontrollerin farklı gösteriminin sağlanması için ASP.NET Intrinsic (asıl) kontrolleri alternatif bir çözüm sunmaktadır. Yukarıdaki HTML kontrollerinin web kontrolü karşılıkları aşağıda verilmiştir :

<asp:RadioButton>

<asp:CheckBox>

<asp:Button>

Tüm Kontroller İçin Ortak Özellikler Nelerdir?

Asıl kontrollerin ortak özelliklerinin adları hepsinde aynıdır. Örneğin bir kontrolün arka plan rengi değiştirilmek istendiğinde daima BackColor özelliği değiştirilmelidir, her kontrolün Text özelliği vardır gibi. Herhangi bir kontrolün arka plan rengini sarı olarak değiştirmek için BackGround=“Yellow“ ifadesi kullanılır.

<asp:Label id=“Label1“ Text=“Selam Millet!“ BackColor=”Yellow” runat=”server” />

<asp:Button id=”Button1” Text=”Gönder” BackColor=”LightSkyBlue” runat=”server”/>

Kontrole Has Özellikler

Asıl (Intrinsic) web kontrollerinin ortak özelliklerinin yanında her kontrolün kendine özel özellikleri vardır.

CheckBox

Örneğin bir check box’ın Checked özelliği vardır. Bu özellik diğer kontrollerde yoktur ve checkbox’ın seçili olup olmadığını belirtir. Aşağıdaki örnek kodda Normal etiketine sahip ve ilk geldiğinde seçili olan bir checkbox yaratılmaktadır :

<asp:CheckBox Checked=”True” Text=”Normal” runat=”server” />

ListBox

Web kontrollerinin bazı özellikleri çalışma anında mevcutturlar. Örneğin listbox ve drop-downlistbox kutularının çalışma anında seçili değerlerinin okunmasını sağlayan aşağıdaki özellikleri vardır :

· SelectedItem özelliği bir listbox içindeki seçili elemanın değerini verir.

· SelectedItems özelliği çoklu seçime izin veren bir listbox kontrolü içindeki seçili elemanlardan oluşan bir koleksiyon döndürür.

Web Gezginine Özel HTML

Web kontrollerinin yaratılması ve kullanılması kolay olmasına rağmen bu kontroller üstün özelliklere sahiptirler. Kullanıcı bir web gezgini ile istekte bulunduğunda web kontrolleri hangi web gezgininin istekte bulunduğunu saptar ve bu web gezginine özel HTML çıktısı üretir. Örneğin istekte bulunan web gezgini istemci tarafında scriptlerin çalışmasına izin veriyorsa (örneğin Microsoft Internet Explorer 4.0 veya daha sonraki bir sürüm) kontroller kulanıcı tarafında çalışan scriptler ile kendilerinden beklenilen işlevi sağlar. Eğer istemci web gezgininin script desteği yoksa kontroller sunucu tarafında çalışacak kod üreterek aynı işlevi sağlar fakat bu durumda sunucu bilgisayara çok daha fazla gidilecektir. Örneğin Internet Explorer 5.5 için checkbox örneğimizdeki kodun yarattığı HTML çıktısı şöyledir:

<span>

<input type=”checkbox” id=”ctrl1”>

<label for=”ctrl1”>Normal</label>

</span>

Asıl Kontrollerin Listesi

Aşağıdaki tabloda asıl kontrollerin bazıları ve karşılıkları olan HTML kontrolleri listelenmiştir :

Web controlü HTML kontrolü

<asp:TextBox>

<input type=“text“>

<asp:Button>

<input type=”submit”>

<asp:ImageButton>

<input type=”image”>

<asp:CheckBox>

<input type=”check”>

<asp:RadioButton>

<input type=”radio”>

<asp:ListBox>

<select size=”n”> </select>

<asp:DropDownList>

<select> </select>

<asp:HyperLink>

<a href=”…”></a>

<asp:Image>

<img src=”…”>

<asp:Label>

<span> </span>

<asp:Panel>

<div> </div>

<asp:Table>

<table> </table>

Kod ile Kontrol Ekleme

Web sayfasına, sürükleyip bırakarak veya çift tıklayarak herhangi bir web kontrolü ekleebilir fakat biz burada daha zor olan kod yazarak kontrol eklemeyi birkaç kontrol için ele alacağız.

Label

Bir form üzerine aşağıdaki şekilde bir etiket eklenebilir :

<asp:Label runat=”server” Text=”Selam Millet!”></asp:Label>

DropDownList

Bu kontrol içerdiği birçok elemandan sadece birinin seçilebilmesine izin verir. Aşağıdaki kod bir form üzerine bir dropdownlist’in nasıl ekleneceğini göstermektedir :

<asp:DropDownList id=”DropDownList1” runat=”server”>

<asp:ListItem>Kolay</asp:ListItem>

<asp:ListItem>Normal</asp:ListItem>

<asp:ListItem>Zor</asp:ListItem>

</asp:DropDownList>

CheckBox

Form üzerine aşağıdakine benzer şekilde bir checkbox kontrolü eklenebilir :

<asp:CheckBox runat=”server” Text=”CheckBox1” Checked=”True”></asp:CheckBox>

Asıl Kontrollere Ait Olaylar İnceleyelim

Web formlarına ait olayların çalışma prensibi geleneksel istemci tabanlı uygulamalara ait olayların çalışma prensibinden farklıdır. İstemci tabanlı uygulamalarda olaylar istemci tarafında gerçekleşir ve yine istemci tarafında ele alınır. Web formlarında ise olaylar yine istemci tarafında gerçekleşir fakat sunucu tarafında ele alınarak değerlendirilir.

Web kontrolleri sadece sunucu taraflı olayları destekler. Web kontrollerine ait olaylar sunucu tarafında ele alındıkları için istemci ile sunucu arasında sık sık git gel olur. Bu yüzden web kontrollerinin sahip oldukları olay sayıları sınırlıdır. Web kontrolleri tıklama (click) tipi olayları destekler. Bazı sunucu kontrolleri onChange olayının özel bir çeşidini destekler. Örneğin SelectionChanged olayı. Bu olay kontrolün seçili olan değeri değiştiği zaman ateşlenir.

Olaylara Ait Yordamların Kullanılması ile İlgili

Bir Html kontrolü için, bir olayın gerçekleşmesi durumunda çalıştırılması istenilen kod bir yordam olarak hazırlanır ve olayın gerçekleşmesi durumunda bu yordam çağrılır. Web kontrolleri için de durum aynıdır. Olayın gerçekleşmesi durumunda yapılması istenenler yordam olarak hazırlanır ve kontrolü yaratan tag içerisinde olayın gerçekleşmesi durumunda bu yordamın çağrılacağı belirtilir. Örneğin :

<asp:Button id=“Button1“ runat=“server“ onclick=“Button1_Click“ />

Button1 düğmesinin tıklanması durumunda çalıştırılması istenen yordam aşağıdaki gibi hazırlanabilir :

private void Button1_Click(object sender,System.EventArgs e)

{

Label1.Text = “Selam Millet!”;

}

Web kontrolleri istemci taraflı olayları desteklemez. Kullanıcının bir web kontrolü üzerinde gerçekleştireceği bir olaya ilişkin yordam sunucu tarafında çalıştırılır, kullanıcının bilgisayarında çalıştırılacak kod yazmak mümkün değildir. HTML kontrolleri ise hem istemci hem de sunucu taraflı kod yazımını destekler.

Otomatik Geri Gönderme (AutoPostBack) Önemliii

Web kontrollerinin tıklama (click) olayı gerçekleştiğinde form sunucu bilgisayara gönderilir. Formun sunucuya gönderilmesi sadece click olaylarında gerçekleşir. Diğer olaylar gerçekeleşir gerçekleşmez sunucuya gönderim yapılmaz. Bu olaylar web kontrolleri tarafından sunucuya gönderim yapılana dek tutulur. Form sunucuya gönderildiğinde bu olaylara ait yordamlar da işletilir.

Sunucuya gönderilen sayfanın sunucu bilgisayar tarafından işlenmesi sırasında önce değişme (change) olaylarına ait yordamlar işletilir. Bu esnada herhangi bir sıralama söz konusu değildir. Change olaylarına ait yordamların işletimi bittikten sonra sıra formun sunucuya gönderilmesine sebep olan click olayına ait yordamın işletimine gelir.

Bir web kontrolünün change olayına ait yordamın change olayı gerçekleşir gerçekleşmez çalışması sağlanabilir. Bunun için yapılması gereken sadece o web kontrolünün AutoPostBack özelliğinin True yapılmasıdır. Örneğin bir TextBox metin kutusunun içeriğinin değişmesi durumunda sunucu tarafında bir kodun çalıştırılması sağlanabilir :

<asp:TextBox id=“TBox1“ runat=“server“ onTextChanged =“TBox1_TextChnaged“ AutoPostBak=”True”>

private void TBox1_TextChanged(object sender, System.EventArgs e)

{

Label1.Text = “Değişti.”

}

Kullanıcı metin kutusuna yeni bir şey yazar yazmaz olay gerçekleşmez, metin kutusunun içeriği değiştikten sonra “Tab” tuşuna basıldığında ya da fare ile seçili kontrol değiştirildiğinde olay gerçekeleşir.

Kontrolleri Birbirlerine Bağlama Olayları

Bir kontrolün sahip olduğu bir değer başka bir kontrole bağlanabilir. Bu özellikle listbox ve dropdownlist’lerden değerleri almakta kullanılmaktadır. Örneğin bir TextBox’ın içeriğini bir DropDownList’e bağlayalım. Bu iş için yapılması gereken TextBox’ın Text özelliğini DropDownList’in SelectedItem.Text özelliğine bağlamaktır :

<asp:DropDownList id=”DropDownList1” runat=”server” AutoPostBack=”True”>

<asp:ListItem value=”1” selected=”True”>birinci</asp:ListItem>

<asp:ListItem value=”2” selected=”True”>ikinci</asp:ListItem>

</asp:DropDownList>

<asp:TextBox id=”TextBox1” runat=”server”

Text=”<%# DropDownList1.SelectedItem.Text %>” />

DropDownList’in AutoPostBack özelliğinin “True” olması gerekmektedir, böylece DropDownList’in değeri değiştiğinde form sunucuya gönderilir. <%# %> bağlama etiketleri sayesinde sunucu tarafında sayfanın yüklenmesi sırasında veri bağlanır :

private void Page_Load(object sender, System.EventArgs e)

{

TextBox1.DataBind();

}

TextBox1.DataBind() ile sayfanın yüklenmesi sırasında sadece TextBox1 kontrolüne veri bağlanmaktadır. Eğer sayfanın üzerinde birden fazla kontrole veri bağlanacaksa tek tek tüm kontrolleri belirtmek yerine Page.DataBind() kullanılmalıdır :

private void Page_Load(object sender, System.EventArgs e)

{

Page.DataBind();

}

Alıntıdır…

Yazar : Gökay Burak AKKUŞ & Tarık ÖZKAN

Popularity: 3% [?]




1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading ... Loading ...
  1. hocam ilk defa sitene girdim ve cok kaliteli bir site yapmissin gercekten… metin kutularına girilen verilerin geçerliliğinin kontrolunu bu makaleden tam olarak anladim..
    emegine saglik tesekkurler…(bu islerden anliyorsan sitemi ziyaret edebilir ve benimle baglantiya gecebilirsin..)

  2. hocam ilk defa sitene girdim ve cok kaliteli bir site yapmissin gercekten… metin kutularına girilen verilerin geçerliliğinin kontrolunu bu makaleden tam olarak anladim..
    emegine saglik tesekkurler…(bu islerden anliyorsan sitemi ziyaret edebilir ve benimle baglantiya gecebilirsin.. http://www.hackantakim.com)

  3. iyi iyi güzel döküman eline sağlık zaten bu sitede gezmeyi cok seviyorum çok dolu bir insanın sitesi number van walla

    • NihAl EMRE
    • 13 Nisan 2009

    canım her ınternete gırdıgımde giriş sayfam olarak siten acılıyor ..hatta sadece benım degıl emin ol bircok arkadasımın giriş sayfası oldu siten.. bir bilgisayarcı olarak , siten bizim google’mız oldu…:) biliyorum kı cok dolu bır ınsansın ve buraya daha cok sey ekleyeceksın..

    unutmadan,,

    birgun, beynındekı o uçuk ve zor projelerın gercek olucak..bundan eminiz…

    • Kimse
    • 20 Ekim 2009

    Sağlıklı bilgilerinizden dolayı teşekkür ederim.

  1. 7 Mart 2009
    Trackback from : Celebrity Archives
 

Sitemizi N/A kişi takip ediyor.Aşağıdaki kutucuğa e-posta adresinizi girin sitemize yeni eklenen içerikten haberiniz olsun...

Sitemize üye olduktan sonra, e-posta adresinize bir onay maili gelecek. O maili onaylamazsanız, üyeliğiniz tamamlanmaz. 

RSS okuyucu ile takip edin...