C# 中继器不创建子控件
我试图找出为什么DataBind()确实在中继器上触发数据绑定事件,但没有注入子控件(位于其ItemTemplate标记内的子控件)C# 中继器不创建子控件,c#,asp.net,C#,Asp.net,我试图找出为什么DataBind()确实在中继器上触发数据绑定事件,但没有注入子控件(位于其ItemTemplate标记内的子控件) <asp:Repeater ID="rptMessages" runat="server"> <asp:ItemTemplate> <VallisLive2:NotificationWidget ID="ctlNotification" runat="server
<asp:Repeater ID="rptMessages" runat="server">
<asp:ItemTemplate>
<VallisLive2:NotificationWidget ID="ctlNotification" runat="server"
NotificationID='<%# Eval("NotificationID") %>'
Title='<%# Eval("Title") %>'
Details='<%# Eval("Details") %>'
CreatedDateTime='<%# Eval("CreatedDateTime") %>'
Importance='<%# Eval("Importance") %>' />
</asp:ItemTemplate>
</asp:Repeater>
失败原因:System.NullReferenceException:“对象引用未设置为对象的实例。”
控件为空。它无法在中继器中找到控件,因为它试图绑定它,因为它没有被创建
因此DataBind()可以工作,它激发,它有有效的源数据,但最终结果是中继器的输出为空,以上证明中继器没有创建子控件
非常感谢您的任何想法:)昨天显然过得不好。答案是声明,而不是在中继器内 很明显昨天过得不好。答案是声明而不是在Repeater.Load_事件中描述数据,例如con.Open();rptmessage.DataSource=cmd.ExecuteReader();rptmessage.DataBind();con.Close();
<asp:Repeater ID="rptMessages" runat="server" OnItemDataBound="rptMessages_ItemDataBound">
protected void rptMessages_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
var n = e.Item.DataItem as Notification;
var control = e.Item.FindControl("ctlNotification") as NotificationWidget;