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;
}
}
내가 확인 (죄송합니다, 그건 당신하여 ItemDataBound 방법에 가야 메모리에서,하지만) . (당신을위한 구문을 고쳤습니다) – mbillard
좋아, thnks :) 정말 작동 –
고마워, 내 맥에, MSDN이나 Intellisense에 대한 빠른 액세스 권한이 없었어요 :) – Jonas