2009-06-21 20 views
1

ここで例外をスローするリピータコードの一部です... "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) 
{ 
} 

(申し訳ありませんが、これはメモリからですが、それはあなたのItemDataBound方法で行く必要があります)

+0

私は確認。 – mbillard

+0

Ok、thnks :) これは本当にうまくいきます –

+0

ありがとう、私のMacで、MSDNまたはIntellisenseにすばやくアクセスできませんでした:) – Jonas

関連する問題