ÜYE GİRİŞİ  
Kullanıcı adı :
Parola :
 
  Üye Ol!  
 
 
ANASAYFA HABERLER ASP ASP.NET PHP C/C++ C# JAVA ARAMA İLETİŞİM

ASP.NET
  Expression Web ile Site Yapimi
  Web Server Control Yazmak - 2
  Web Server Control Yazmak - 1
  Sql Cache Dependency
  Web Kontrollerini Etkin Kullanmak
  Xslt Kullanımı
  Bir Web Sayfasının Anatomisi
  Client Script Callback
  Login Kontrollerinin Kullanımı

ASP
  ASP Nesneleri
  29 Soruda ASP
  Matematiksel Uygulamalar
  Select Case Yapısı 2
  Fonksiyon(Function) Kullanımı
  IF-ELSE...
  GET Yöntemi ile İşlemler
  Asp de Tarih ve Saat fonksiyonları
  While-wend döngüsü

C Sharp (C#)
  C#'da klasör işlemleri
  C# ile diziyi tersine çevirme
  Çok Kullanılan Kontroller-1
  C# ile Kronometre Uygulaması
  Overloaded Metotların Gücü
  C# ile XMLQuery Örneği
  Rastgele Kod Üretimi
  Kontroller ile Çalışma
  Düzenli İfadeler Nedir?

DUYURULAR

F# Microsoft dil teknolojisinin en yeni üyesi.Common Lisp-Slime-Emacs tarzında etkileşimli,kıvrak,sonuçların anında görülebildiği ve yüksek performanslı bir betik dil olarak özetleyebiliriz bu yeni dili. devamı >>


Türk Telekom'dan yapılan yazılı açıklamada, Telekomünikasyon Kurumu'nun onayladığı yeni tariflerin, internet servis sağlayıcı şirketlerin maliyetlerini önemli oranlarda düşüreceği aktarıldı. devamı >>


ASP.NET'te Dinamik Olarak Kontrol Eklemek | Asundinay.Com
Asp.Net İçin Eklenmiş Makale
 Makale Adı  :  ASP.NET'te Dinamik Olarak Kontrol Eklemek
 Yayın Tarihi :  12.08.2007 18:08:41 Ekleyen :  Kazım Aydın Okunma : 178

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 Forms’un 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 ListBoxItems’a 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ü Labelpanel’in 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 id’lerine 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.


 

Kaynak : csharpnedir.com


 

Asp.Net İçin Eklenmiş Tüm Makaleler
Asp.Net İçin En Son Eklenen 5 Makale
 Makale Adı  :  Expression Web ile Site Yapimi
 Yayın Tarihi :  12.08.2007 19:57:26 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Server Control Yazmak - 2
 Yayın Tarihi :  12.08.2007 19:52:45 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Server Control Yazmak - 1
 Yayın Tarihi :  12.08.2007 19:48:59 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Sql Cache Dependency
 Yayın Tarihi :  12.08.2007 18:36:18 Ekleyen :  Kazım Aydın Makaleyi Oku  
 Makale Adı  :  Web Kontrollerini Etkin Kullanmak
 Yayın Tarihi :  12.08.2007 18:34:25 Ekleyen :  Kazım Aydın Makaleyi Oku  

C/C++
  C ögreniyorum -8-
  C ögreniyorum -7-
  C ögreniyorum -6-
  C ögreniyorum -5-
  C ögreniyorum -4-
  C ögreniyorum -3-
  C ögreniyorum -2-
  C ögreniyorum -1-
  İlk C++ Programımız

JAVA
  Java ile Histogram Eşitleme
  JAVA İçinde Thread Kullanımı
  Serialization İşlemleri 2
  Serialization İşlemleri
  İlk Bakışta JSP
  Servletler ile Web Sayfaları
  Java ile Grafik Çizim
  Java, MySql Bağlantısı
  JBuilder ile Database

PHP
  php dersleri -1-
  php/access ile silme işlemi
  php ile access'e bağlanma - 2
  php ile access'e bağlanma - 1
  Döngü ve Diziler - BÖLÜM 5
  Döngü ve Diziler - BÖLÜM 4
  Döngü ve Diziler - BÖLÜM 3
  Döngü ve Diziler - BÖLÜM 2
  Döngü ve Diziler - BÖLÜM 1

İSTATİSTİKLER
  Toplam ziyaret :  24684
  Toplam üye sayısı :  1077
  Asp makale sayısı :  20
  Asp.Net makale sayısı :  54
  Php makale sayısı :  26
  C/C++ makale sayısı :  51
  C# makale sayısı :  29
  Java makale sayısı :  33
  Toplam makale saıysı :  213
Copyright asundinay® 2007 Her Hakki Saklidir
Tasarim & Programlama asundinay®