在父ItemDataBound事件中访问嵌套转发器时出错

时间:2011-08-10 21:38:21

标签: c# asp.net repeater itemdatabound

错误:

'Repeater'不包含'DataSource'的定义,也没有扩展方法'DataSource'接受类型'Repeater'的第一个参数(你是否缺少using指令或汇编引用?)

代码:

 protected void rptIndicator_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater r2 = (Repeater)e.Item.FindControl("rptActivity");
        r2.DataSource = dt; //Error on this line.
        r2.DataBind();
    }

标记:

<asp:Repeater ID="rptIndicator" runat="server" OnItemDataBound="rptIndicator_ItemDataBound">
        <ItemTemplate>
            <asp:Repeater ID="rptActivity" runat="server">
                <ItemTemplate>
                    <asp:Repeater ID="rptActivityData" runat="server"></asp:Repeater>
                </ItemTemplate>
            </asp:Repeater>
        </ItemTemplate>
    </asp:Repeater>
你能帮忙吗?为什么.DataSource在这里给我错误。

感谢。

2 个答案:

答案 0 :(得分:0)

您是否在其名称空间中包含一个Repeater类的其他引用?

也许尝试将其投放到System.Web.UI.WebControls.Repeater

答案 1 :(得分:-1)

首先,你需要检查ItemType,否则你会想知道为什么会出现运行时错误。

switch (e.Item.ItemType) {
    case ListItemType.Item:
    case ListItemType.AlternatingItem:
         Repeater r2 = (Repeater)e.Item.FindControl("rptActivity");
         r2.DataSource = dt; //Error on this line.
         r2.DataBind();
 }

我猜这是一个错字,但您的标记会将转发器列为“ rptActivityData ”,但在您的代码中,您正在寻找FindControl("rptActivity")