为什么我无法访问 Repeater 内的 UserControl 自定义 属性?
Why can't I access to a UserControl custom property inside a Repeater?
我正在为 Repeater 做数据绑定:
<asp:Repeater ID="rptAlumni" runat="server" OnItemDataBound="rptAlumni_DataBinding">
<ItemTemplate>
<uc1:AlumnoBox runat="server" ID="AlumnoBox" />
</ItemTemplate>
</asp:Repeater>
protected void rptAlumni_DataBinding(object sender, RepeaterItemEventArgs e)
{
var item = (UserControl)e.Item.FindControl("AlumnoBox");
}
但我做不到 item.MyCustomID
例如,我看不到 属性。相反,如果我将 UserControl 移到 Repeater 之外,并在 Page Load 中执行 AlumnoBox.MyCustomID
它也可以正常工作。
我哪里错了?
您的 UserControl
继承自 UserControl
,但您添加了其他属性,例如 MyCustomID
。当然,如果您转换为 UserControl
,您将无法访问这些属性,因为基础 class 不知道它们。而是转换为正确的类型 AlumnoBox
:
var item = (context_box_AlumnoBox) e.Item.FindControl("AlumnoBox");
int id = item.MyCustomID;
我正在为 Repeater 做数据绑定:
<asp:Repeater ID="rptAlumni" runat="server" OnItemDataBound="rptAlumni_DataBinding">
<ItemTemplate>
<uc1:AlumnoBox runat="server" ID="AlumnoBox" />
</ItemTemplate>
</asp:Repeater>
protected void rptAlumni_DataBinding(object sender, RepeaterItemEventArgs e)
{
var item = (UserControl)e.Item.FindControl("AlumnoBox");
}
但我做不到 item.MyCustomID
例如,我看不到 属性。相反,如果我将 UserControl 移到 Repeater 之外,并在 Page Load 中执行 AlumnoBox.MyCustomID
它也可以正常工作。
我哪里错了?
您的 UserControl
继承自 UserControl
,但您添加了其他属性,例如 MyCustomID
。当然,如果您转换为 UserControl
,您将无法访问这些属性,因为基础 class 不知道它们。而是转换为正确的类型 AlumnoBox
:
var item = (context_box_AlumnoBox) e.Item.FindControl("AlumnoBox");
int id = item.MyCustomID;