Birden Fazla Label Kontrolünü Döngü Kullanarak Değiştirme


Twitter'da Paylaş Favorilerime Ekle

Çok Sayıda Sunucu Kontrolü ile Ard Arda İşlem Gerçekleştirme

Asp.Net'te bir sunucu kontrolünün özelliklerini kod ile değiştirmek oldukça kolaydır. Örneğin bir label nesnesinin text özelliğini;

Label1.Text = "Selam";

şeklinde değiştirebiliriz.

Peki değiştirilecek çok sayıda label varsa, örneğin 100 tane Label kontrolünün tümünün Text özellikleri değiştirilmek isteniyorsa ne yapabiliriz. Hepsini tek tek değiştirmeye kalktığımızda 100 satır kod ortaya çıkacaktır.

Bunun yerine bir döngü içinde bu iş halledilebilir. 100 tane Label kontrolümüz var ve isimleri Label1, Label2, ... , Label100 şeklinde olsun. Yani "Label" kısımları ortak, sondaki numara ise ardışık olarak atanmış durumda.

Öncelikle söyleyelim, şöyle bir kullanım işe yaramaz: Label [ i ]

Asp.Net sayfalarında Id'sine göre bir kontrolü bulmak için FindControl metodu kullanılır. FindControl metodu parantezi içerisinde ulaşılmak istenen kontrolün Id'si yazılır. Bu metodu kullanarak, aşağıdaki gibi bir döngü kuralım:

for (int i = 1; i <= 100; i++)
{
    var label = ((Label)FindControl("Label" + i));
 
    label.Text = i.ToString();
 
}

Yukarıdaki 3 satırlık kod ile 100 adet labelin Text özelliklerini değiştirmiş olduk.

MasterPage Kullanılan Sayfalarda FindControl Metodu Hatası

Eğer yukarıdaki örneği masterpage'e bağlı bir sayfada çalıştıracaksak hata verecektir. Çünkü FindControl metodu, contentpage içindeki nesneyi bulamayacaktır. MasterPage ve FindControl kullanımı durumunda kodları şu şekilde yazabiliriz.

for (int i = 1; i <= 3; i++)
{
    var label = (Label)((ContentPlaceHolder)this.Master.FindControl("MainContent")).FindControl("Label" + i);
            
        label.Text = "hello";
            
}
 
findcontrol with master page, asp.net find control in content page, asp net masterpage ile findcontrol kullanımı, birden fazla label içindeki metni döngü ile değiştirme, change multiple label using for loop

KONU İLE İLGİLİ ÖRNEKLER