2009-03-07 15 views
0

Dinamik olarak oluşturulmuş hazır denetimimde denetimlerimi bulmakta sorun yaşıyorum. Etiketteki değeri fnameID(x) kimliğiyle yakalayabilmek istiyorum.Dinamik Literal Denetimden değerleri bulmak için findcontrol kullanarak sorun

ASPX: ARKASI

<div> 
    <asp:Panel ID="Panel1" runat="server"> 
    </asp:Panel> 
</div> 
<asp:Button ID="Button1" runat="server" Text="Button" 
    onclick="Button1_Click" /> 

KODU:

Object reference not set to an instance of an object. 

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. 

Kaynak Hatası:

Ben butonuna tıkladığınızda

protected void Page_Load(object sender, EventArgs e) 
{ 
    for (int i = 0; i < 50; i++) 
    { 
     CheckBox _checkbox = new CheckBox(); 
     _checkbox.ID = "dynamicCheckListBox" + Convert.ToString(i); 
     Panel1.Controls.Add(_checkbox); 
     Panel1.Controls.Add(new LiteralControl("<Label id='fnameID" 
      + i + "' >test" + i + "</Label><br/>")); 
    } 

} 

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Label lbl = (Label)Panel1.FindControl("fnameID0"); 
    Response.Write(lbl.Text); 
} 

Şu aşağıdaki hatayı alıyorum

{ 
Label lbl = (Label)Page.FindControl("fnameID0"); 
**Response.Write(lbl.Text);** 
} 

cevap

2

açıkça Oluşturduğunuz denetimin kimliğini belirlemeyi deneyin: Belirtilen kimliğe sahip herhangi bir denetim bulundu ediliyor, çünkü sen null başvuru özel alıyoruz

protected void Page_Load(object sender, EventArgs e) 
{ 
    for (int i = 0; i < 50; i++) 
    { 
     CheckBox _checkbox = new CheckBox(); 
     _checkbox.ID = "dynamicCheckListBox" + Convert.ToString(i); 
     Panel1.Controls.Add(_checkbox); 

     LiteralControl dynLabel = new LiteralControl("<Label id='fnameID" 
      + i + "' >test" + i + "</Label><br/>"); 
     dynLabel.ID = "fnameID" + i.ToString(); 

     Panel1.Controls.Add(dynLabel); 
    } 

} 

yüzden FindControlnull dönüyor, ve mümkün null'un Text özelliğini almayın.

İlgili konular