11 Mart 2015 Çarşamba

Asp.Net C# Yaşam Döngüsü ve Dinamik Olarak Nesne Eklemek.

Asp.Net projelerinde Page Life Cycle(Sayfa yaşam döngüsü) vardır. Her olayın bir gerçekleşme sırası mevcuttur. Bu yüzden ViewState yüklenmeden bizim kontrollerimizi eklememiz mantıklı olacaktır.  ViewState oluşmadan işlemimizi en doğru şekilde gerçekleştirebileceğimiz yer OnInit eventıdır.
Asp.NET sayfaları Yaşam döngüsüne bakacak olursak;
  • Instantiate
  • Initialize (OnInit olayında gerçekleşir)
  • Load Viewstate
  • Load (Page_load olayında gerçekleşir)
  • Pre Render
  • Save Viewstate
  • Render
  • Unload
Load Viewstate olayı, Page_Load olayından önce gerçekleşmektedir.
Örneğin boş bir aspx sayfası oluşturun içine toolboxtan bir panel ekleyin ve kod bölümüne geçin ve aşağıdaki kodları yazın. 
// sayfamızın her yerinden oluşturduğumuz kontrollere erişebilmemiz için global tanımlamamız gerekiyor.
TextBox metinkutusu = null;
Button dugme = null;
protected override void OnInit(EventArgs e)
{
metinkutusu = new TextBox();
metinkutusu.ID = “Metin1″;
dugme = new Button();
dugme.Text = “Düğmenin Görünen Adı”;//butonun metni
dugme.ID = “dugme”;//idsi
dugme.Click += new EventHandler(dugme_Click); //butonumuza tıklama olayı oluşturduk
panel.Controls.Add(metinkutusu);//oluşan panele ekledik
panel.Controls.Add(dugme);//oluşan panele ekledik
InitializeComponent();//tasarım oluşturuluyor
base.OnInit(e);
}
private void InitializeComponent() // Tasarım anı desteği için gerekli
{
}
void dugme_Click(object sender, EventArgs e)
{
metinkutusu.Text = DateTime.Now.ToString();
dugme.Text += “123”;
}
Diğer bir Örnek; sayfada bir tek panel eklendi
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:”;
Panel1.Controls.Add(labelarray[i]);
uste_uzaklik += 30;
}
}
protected override void OnInit(EventArgs e)
{
labelekle();
InitializeComponent();//tasarım oluşturuluyor
base.OnInit(e);
}
private void InitializeComponent() // Tasarım anı desteği için gerekli
{
}

Hiç yorum yok :

Yorum Gönder