我有一个包含转发器的用户控件。似乎数据无法分配给它的DataSource属性,我尝试了几个不同的数据源,但显示以下错误:(我已调试它,数据源中有数据项)
Object reference not set to an instance of an object
这是转发器的aspx:
<asp:Repeater ID="repeater1" runat="server" >
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<%# Eval("Name") %>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
</asp:Repeater>
我在要显示转发器的文件后面的代码中创建了一个用户控件的实例 - 我无法输入repeater1.DataSource并在该页面中分配它,所以我向用户控件添加了一个属性将IEnumerable作为数据源。
为什么这不起作用?
答案 0 :(得分:3)
您应该使用DataBind()
方法执行此类操作,如下所示:
public override void DataBind()
{
this.repeater.DataSource = ...
this.repeater.DataBind();
...
}
因此它会在父页面调用Page.DataBind()
时绑定
使用此方法将数据从源绑定到服务器控件。这个 通过数据库检索数据集后,通常使用方法 查询。大多数控件自动执行数据绑定,这意味着 您通常不需要显式调用此方法。
答案 1 :(得分:2)
试试这个:在用户控件中,在转发器所在的位置,在OnLoad()方法中
这样做:
repeater1.DataSource = MyIEnumerableProperty;
repeater1.DataBind();