2009-06-21 3 views
1

다음은 예외를 throw하는 리피터 코드의 일부입니다. "Computer.Administrators"는 StringCollection 객체입니다. 디버거는 "AdminsEnumerator.Current"가 올바른 문자열 값을 가져 오지만 "txtAdministrators.Text"가 값을 설정하려고 시도 할 때 예외가 발생 함을 보여줍니다. 제발 도와주세요.e.Item.FindControl throw 객체 참조가 객체의 인스턴스로 설정되지 않음

<asp:Repeater ID="repeatAdministrators" OnItemDataBound="repeatAdministrators_ItemDataBound" runat="server"> 
    <HeaderTemplate> 
     <tr> 
      <td class="formLabel"> 
       Administrators: 
      </td> 
      <td class="formInputText"> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <asp:TextBox ID="txtAdministrators" runat="server" MaxLength="50" Enabled="False"></asp:TextBox><br /> 
    </ItemTemplate> 
    <FooterTemplate> 
     </td> </tr> 
     <tr> 
    </FooterTemplate> 
</asp:Repeater> 

그리고 여기에 코드 숨김이 있습니다.

protected void btnPing_Click(object sender, EventArgs e) 
    { 
     //... 

     repeatAdministrators.DataSource = Computer.Administrators; 
     repeatAdministrators.DataBind(); 
    } 

    protected void repeatAdministrators_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     TextBox txtAdministrators = e.Item.FindControl("txtAdministrators") as TextBox; 
     StringEnumerator AdminsEnumerator = Computer.Administrators.GetEnumerator(); 

     while (AdminsEnumerator.MoveNext()) 
     { 
      txtAdministrators.Text = AdminsEnumerator.Current; 
     } 
    } 

답변

3

당신은 당신이 헤더 항목에서 아니에요 확인해야합니다 :

if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
{ 
} 

+0

내가 확인 (죄송합니다, 그건 당신하여 ItemDataBound 방법에 가야 메모리에서,하지만) . (당신을위한 구문을 고쳤습니다) – mbillard

+0

좋아, thnks :) 정말 작동 –

+0

고마워, 내 맥에, MSDN이나 Intellisense에 대한 빠른 액세스 권한이 없었어요 :) – Jonas

관련 문제