Bu site emekli olmuştur. Arşiv amaçlı olarak
BT AKADEMİ
sponsorluğunda yayın hayatına devam etmektedir.
Ana Sayfa
.net TV
Makaleler
Kaynak Kod
Haberler
Serbest Köşe
Canlı Köşe
Forum
C#nedir?
Ekibimiz
RSS
ADO.NET/SQL
C / Sys Prog.
Genel
Mono ve .NET
Silverlight
XML / Web Serv.
X86 Assembly
C++ / C++.NET
J#.NET / Java
.NET 3.x
UML / Analiz
Yazılım Müh.
ASP.NET
C# / VC#/.NET
Mobil Prog.
PHP 5
YAZAR HAKKINDA
Caner Şahan
http://www.csharpnedir.com/
İletişme geçmek için
tıklayın
.
24
Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için
tıklayın
.
Yayınlanan diğer makaleleri için
tıklayın
.
İlgili etiketler:
button
buttonuna
dinamik
dizisi
dizisini
ekleyerek
elemanli
for(int
kontrol
kontrollerin
sayfanin
server
tarafli
textbox
zamaninda
ASP.NET
Caner Şahan
YAZI HAKKINDA
Türü
:
Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi
:
Orta
Kategori
:
ASP.NET
Yayınlanma Tarihi
:
12.1.2005
Okunma Sayısı
:
51345
Yorum Sayısı
:
2
yorum yaz
SİTE İÇİ ARAMA
Üye
GİRİŞİ
Üye girişi için
tıklayın
.
Kullanıcı Adı
Şifre
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
Şifremi / Kullanıcı Adımı unuttum.
C#nedir? hesabınız yok mu?
Üye olabilmek için
tıklayın
.
Serbest KÖŞE
(?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır.
Bu yazılar editör incelemesine girmeden yayınlanır.
Silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
silindi
emre TAŞ
yazının devamı >
Bende Yazmak İstiyorum
Blogroll
Turhal Temizer
Conda install environment.yml Package
21.11.2024
Turhal Temizer
Mac OS/X Removing CUDA
21.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak
21.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi
21.11.2024
Diğer Herşey
»
Makaleler RSS
»
Video Gönder
»
Makale Gönder
»
Serbest Köşeye Yazı Gönder
»
Yazar Başvurusu
»
C#nedir? Ekibinde Olmalıyım!
Sponsorlar
Ana Sayfa
/
Makaleler
/
ASP.NET
/
ASP.NET'te Dinamik Olarak Kontrol Eklemek
ASP.NET'te Dinamik Olarak Kontrol Eklemek
Favorilerime Ekle
Gönderiliyor lütfen bekleyin...
arkadaşıma gönder
Arkadaşınızın email adresi:
*
Mesajınız:
Bu yazımızda ASPNET ile dinamik kontrollerin nasıl yaratılarak,kullanıldığına değineceğiz. Öncelikle dinamik kontrollerle neden bahsettiğimizi açıklayalım. Web Formsun server taraflı çalışan üyelerinden bahsediyorum. Yani bir Label,TextBox yada herhangi bir server kontrol olabilir. Makalemizde Web uygulamamıza çalışma zamanında label dizisi ve textbox dizisini ekleyerek bu textbox içine girilen stringleri alıp ListBoxItemsa ekleyerek konuyu pekiştirmeye çalışacağız.
Öncelikle Server taraflı çalışacak kontrolü(mesala Label) sayfaya eklememiz için bir nesne olarak onu belirtmemiz gerekir. Belirtmiş olduğumuz bu nesneyi Page özelliğinin Controls özelliğinin add methodu ile içine eklemeliyizki sayfanın çalışma anında kontrol eklendiğinden haberi olsun ve tekrar tetiklensin.
Label label1=new Label(); Page.Controls.Add(label1);
Öncelikle sayfamıza bir button ekleyerek bu butona 10 elemanlı bir label dizisini panel(Labelpanel) kontrolümüze ekleyen fonksiyonu inceleyelim:
private void labelekle()
{
int uste_uzaklik=30;
Label [] labelarray=new Label[10];
for(int i=0;i<labelarray.Length;i++)
{
labelarray[i]=new Label();
labelarray[i].Style["Position"]="Absolute";
labelarray[i].Style["Top"]=uste_uzaklik.ToString()+"px";
labelarray[i].Style["Left"]="100px";
labelarray[i].Font.Bold=true;
labelarray[i].Font.Name="Verdana";
labelarray[i].ID=i.ToString();
labelarray[i].Text=labelarray[i].ID+".Label:";
Labelpanel.Controls.Add(labelarray[i]);
uste_uzaklik+=30;
}
}
Yukarıdaki kodu incelediğimiz zaman labelarray adında 10 elemanlı bir Label dizisi oluşturmaktayız. Fakat bu diziyi oluşturmamız her dizi elemanı için bir nesne tanımladığımız anlamına gelmez. Bunun için döngü başlangıcında dizinin her elemanı için bir nesne tanımlamamız gerekmektedir. Daha sonra ise yaratılan nesneye çeşitli özellikleri verilerek Panele(Labelpanel) yerleştiriliyor.
uste_uzaklik
degiskeni ise her labelin üste olan uzaklığını ölçüm için kullandığımız bir değişkendir. Ve son olarakta bu yarattığımız kontrolü Labelpanelin Controllerine ekliyoruz. Label ekle buttonun olayı sonucu meydana gelen sonuç aşadaki resimde gözükmektedir.
şekil 1:Labellerin dinamik olarak eklenmesi
Şimdide senaryomuzun ikinci kısmına geçelim. Bu kısımda TextBox ekleme buttonuna tıklayarak labellerin karşılarına bir TextBox ekleyerek en sona da dinamik bir button ekliyoruz. Kodumuzu incelersek Label eklemeye(labelekle()) çok benzediğiniz görüceksiniz:
private void textboxekle()
{
int uste_uzaklik=30;
TextBox [] textboxarray=new TextBox[10];
for(int i=0;i<textboxarray.Length;i++)
{
textboxarray[i]=new TextBox();
textboxarray[i].Style["Position"]="Absolute";
textboxarray[i].Style["Top"]=uste_uzaklik.ToString()+"px";
textboxarray[i].Style["Left"]="100px";
textboxarray[i].Font.Bold=true;
textboxarray[i].Font.Name="Verdana";
textboxarray[i].ID=i.ToString()+"txt";
TextBoxpanel.Controls.Add(textboxarray[i]);
uste_uzaklik+=30;
}
Button bt=new Button();
bt.Style["Position"]="Absolute";
bt.Style["Top"]=uste_uzaklik.ToString()+"px";
bt.Style["Left"]="100px";
bt.Text="Bitti";
bt.Click+=new EventHandler(this.bt_click);
TextBoxpanel.Controls.Add(bt);
}
private void bt_click(object o,EventArgs args)
{
}
şekil 2:Textboxların eklenmiş hali.
Şu ana kadar herşey yolunda gidiyor değil mi. Ama birde Bitti buttonuna veya başka bir buttona bastığımızı düşünelim. Çalışma zamanında yaratmış olduğumuz bütün dinamik kontrollerin yok olduğunu görüceksiniz. Bunun nedeni; istemcinin sunucudan bir istekde bulunması ve sayfanın buna cevap verirken tekrardan yüklenmesidir. Bunu önlemek için labelekle() ve textboxekle() fonksiyonlarımızı Oninit olayında çağırmak ve sayfa yüklenirken kontrollerinde yüklenmesini sağlamak.
override protected void OnInit(EventArgs e)
{
labelekle();
textboxekle();
InitializeComponent();
base.OnInit(e);
}
Projemizi bu şekliyle derlediğimiz zaman Textboxları ekle ve Labelleri ekle buttonlarına basmadan eklemiş olacağız. Birde dinamik olarak eklediğimiz bt buttonunun olayını incelersek:
private void bt_click(object o,EventArgs args)
{
TextBox txt = null;
for (int i=0;i<TextBoxpanel.Controls.Count;i++)
{
string panelid=TextBoxpanel.Controls[i].ID;
for(int j=0;j<10;j++)
{
string idkey="txt";
idkey+=j.ToString();
if(panelid==idkey)
{
txt=(TextBox)TextBoxpanel.Controls[i];
ListBox1.Items.Add(txt.Text);
txt.Enabled=false;
txt.BackColor=Color.Red;
}
}
}
}
Burdaki mantıkta ise panellere eklediğimiz kontrolleri idlerine göre karşılaştırdıktan sonra kendi türünden kontrole dönüştürerek özelliklerinden yararlanılmıştır.
şekil:3 sayfanın Oninit olayını çağırdıktan sonraki hali
şekil:4 sayfadaki Bitti buttonuna basınca aldığı hal.
örnek uygulama kodları için
İyi Çalışmalar.
Makale:
ASP.NET'te Dinamik Olarak Kontrol Eklemek ASP.NET Caner Şahan
Yazılan Yorumlar
Yorum Yaz
EKİ
11
2011
ali gül
/
üye hakkında
Ellerinize sağlık. hakkaten güzel bir çalışma olmuş çoook faydalı oldu. çok teşekkürler.
EKİ
11
2011
ali gül
/
üye hakkında
Ellerinize sağlık. hakkaten güzel bir anlatım olmuş çoook faydalı oldu. çok teşekkürler.
Sayfalar :
1
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için
tıklayın
.
Üye değilseniz
Üyel Ol
linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
Bu Konuda Son 10
Eklenen Son 10
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
Dizayn ve Kodlama
bt
akademi
. Tüm Hakları Saklıdır © Copyright 2002-2009 c#nedir?com
Makaleler
Serbest Köşe
Makale Gönder
.Net TV
Video Gönder
Canlı Köşe
Kaynak Kod
Forum
Haberler
Röportajlar
Anketler
C# Nedir?
İletişim
Site Haritası
RSS
Favorilere Ekle
Üyelik
Hesap Aktivasyon
Ekibimiz
Ekibe Katıl