Asp.Net Dinamik Form Hatası
-
Selamlar ilginç bir durumla karşı karşıyayım seçilen tipe göre form oluşturup ekrana adedi kadar basıyorum , burada problem yok.
Ancak okurken şöyle bir hata söz konusu ;
Bunlar tanımlamalar
int adult = Convert.ToInt32(spt.Adult);
int Child = Convert.ToInt32(spt.Child);int toplam = adult + Child;
//*
metodlar //*
FormGenerator(adult, "Adult", toplam);
FormGenerator(Child, "Child", toplam);
metodun aldığı değer tipleri de şöyle
public void FormGenerator(int adet , string tip , int max)
FormGenerator metodu şöyle // bununla textboxları oluşturup ekrana basıyorum.
Textboxların tanımları şöyle.
public TextBox[] ad = new TextBox[4];
public TextBox[] soyad = new TextBox[4];Burda oluşturup ekrana basıyorum
public void FormGenerator(int adet , string tip , int max)
for (int i = 0; i < adet; i++)
{
HtmlGenericControl divitem = new HtmlGenericControl("div");HtmlGenericControl div = new HtmlGenericControl("div");
div.Attributes.Add("id", "icerik");
div.Attributes.Add("class", "control-group");
divitem.Attributes.Add("class", "item");
ad[i] = new TextBox();
ad[i].ID = "ad" + kacinci.ToString();
ad[i].Attributes.Add("placeholder", "Ad soyad");
ad[i].Text = tip;soyad[i] = new TextBox();
soyad[i].ID = "soyad" + kacinci.ToString();
soyad[i].Attributes.Add("placeholder", "Soyad");div.Controls.Add(ad[i]);
div.Controls.Add(soyad[i]);this.Panel1.Controls.Add(div);
}
Bununlada okuyup ekrana basıyorum.
for (int i = 0; i < max; i++)
{Response.write(ad[i].Text + " - " + soyad[i].Text + "
");
}sonuç " Object reference not set to an instance of an object."
şöyle de bir durum var diyelim ki sadece bir tipte form oluşturursam hepsi yetişkin yada bebek olan, o zaman hiç bir problem yokancak 2 tipten birden oluşturduğumda yani FormGenerator 2.kez çalıştığında uçuyor.
-
bi kaç kere okudum ama tam olarak anlamadım.. hatanın nereden kaynaklandığı da belli değil. formgenerator demişsin metodun içeriği yok..
eğer tek metodla iş yapmak istiyorsan generic sınıfları/metodları kullanabilirsin. Ya da bir tane base sınıf oluşturup diğer sınıfları ondan türeterek çözebilirsin..
ayrıca exception fırlatan yere break point koyarak oradaki değerlere bak. sanırım oradaki bir değişken null olarak geliyor? hatanın tam çevirisi : "Nesne başvurusu bir nesnenin örneğine ayarlanmadı"
bu şöyle bir şey..
BenimSinif sinif;
int mevcut= sinif.Mevcut;
buradaki olay da aynıdır. çünkü sinif nesnesini creat etmen gerekiyor, çünkü şuan için bellekte ismi var ama değer olarak null dur. null olan bir şeyin field/property v.s. sına erişemezsin..
muhtemleen o nesneyi tekrar create eden fonksiyonu tekrar çağırman gerekiyor.
-
unbalanced bunu yazdı
bi kaç kere okudum ama tam olarak anlamadım.. hatanın nereden kaynaklandığı da belli değil. formgenerator demişsin metodun içeriği yok..
eğer tek metodla iş yapmak istiyorsan generic sınıfları/metodları kullanabilirsin. Ya da bir tane base sınıf oluşturup diğer sınıfları ondan türeterek çözebilirsin..
ayrıca exception fırlatan yere break point koyarak oradaki değerlere bak. sanırım oradaki bir değişken null olarak geliyor? hatanın tam çevirisi : "Nesne başvurusu bir nesnenin örneğine ayarlanmadı"
bu şöyle bir şey..
BenimSinif sinif;
int mevcut= sinif.Mevcut;
buradaki olay da aynıdır. çünkü sinif nesnesini creat etmen gerekiyor, çünkü şuan için bellekte ismi var ama değer olarak null dur. null olan bir şeyin field/property v.s. sına erişemezsin..
muhtemleen o nesneyi tekrar create eden fonksiyonu tekrar çağırman gerekiyor.
içeriği yazmıştım ancak metodun ismini başına eklememısım ıcerık soyle
for (int i = 0; i < adet; i++)
{
HtmlGenericControl divitem = new HtmlGenericControl("div");HtmlGenericControl div = new HtmlGenericControl("div");
div.Attributes.Add("id", "icerik");
div.Attributes.Add("class", "control-group");
divitem.Attributes.Add("class", "item");
ad[i] = new TextBox();
ad[i].ID = "ad" + kacinci.ToString();
ad[i].Attributes.Add("placeholder", "Ad soyad");
ad[i].Text = tip;soyad[i] = new TextBox();
soyad[i].ID = "soyad" + kacinci.ToString();
soyad[i].Attributes.Add("placeholder", "Soyad");div.Controls.Add(ad[i]);
div.Controls.Add(soyad[i]);this.Panel1.Controls.Add(div);
}
-
hocam ben webci değilim öyle div falan dersen çıkamam işin içinden :) ama teamviewer yollarsan bakarım
-
FormGenerator deki
ad[i] soyad[i] leri [kacinci] olarak degistirilmesi gerekiyormuş unbalanced sagolsun yine imdada yetişti dikkatsizlik. Çok sağolasın hocam ellerin dert görmesin.