2009-03-07 8 views
0

動的に作成されたリテラルコントロールで自分のコントロールを見つけることに問題があります。 fnameID(x) IDでラベルの値を取得できるようにしたい。findcontrolを使用して動的リテラルコントロールの値を見つける際に問題が発生する

ASPX:BEHIND

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

CODE:

Object reference not set to an instance of an object. 

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

ソースエラー:

を、私はボタンをクリックしたときに

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); 
} 

は現在、私は次のエラーを取得しています

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

答えて

2

明示的に生成するコントロールのID設定してみてください:指定されたIDとはコントロールが発見されていないので、あなたがnull参照の例外を取得している

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); 
    } 

} 

をのでFindControlnullを返して、そしてあなたができますTextプロパティはnullです。

関連する問題