Asp.net 如何绑定内部转发器?

Asp.net 如何绑定内部转发器?,asp.net,repeater,Asp.net,Repeater,我有一个中继器在另一个中继器里面。现在我想绑定内部中继器。但我得到的错误是“对象引用未设置为对象的实例”。我的代码是 Protected Sub rep_test_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rep_test.ItemDataBound Dim dt As New DataTable dt =

我有一个中继器在另一个中继器里面。现在我想绑定内部中继器。但我得到的错误是“对象引用未设置为对象的实例”。我的代码是

Protected Sub rep_test_ItemDataBound(ByVal sender As Object, ByVal e As   System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rep_test.ItemDataBound
    Dim dt As New DataTable
    dt = obj.getdata()
    Dim innerRepeater As Repeater = DirectCast(e.Item.FindControl("innerRepeater"), Repeater)
    innerRepeater.DataSource = dt
    innerRepeater.DataBind()
End Sub
我的源代码是

<asp:Repeater ID="rep_test" runat="server">
        <ItemTemplate>
            <div id='h<%# DataBinder.Eval(Container, "ItemIndex") %>' class="header" onclick='ToggleDisplay(<%# DataBinder.Eval(Container, "ItemIndex") %>);'>
                <%#DataBinder.Eval(Container.DataItem, "ID")%>
            </div>
            <div id='d<%# DataBinder.Eval(Container, "ItemIndex") %>' class="details">
            <asp:Repeater ID="rep_hello" runat="server">
            <ItemTemplate>
                <%#DataBinder.Eval(Container.DataItem, "batchid")%><br />
                <%#DataBinder.Eval(Container.DataItem, "ts")%><br />
            </ItemTemplate>
            </asp:Repeater>
            <%--    <%#DataBinder.Eval(Container.DataItem, "batchid")%><br />
                <%#DataBinder.Eval(Container.DataItem, "ts")%><br />--%>
            </div>
        </ItemTemplate>
    </asp:Repeater>




如果父中继器中有页眉或页脚,可能也会对它们执行方法,因此找不到内部控件

尝试检查
e.Item.ItemType
是否为
ListItemType.Item
ListItemType.AlternatingItem
中的“仅”,并在这种情况下仅执行代码

当然不能保证这是否是问题所在。还要检查中继器ID是否正确,并验证它是否直接位于父中继器的项模板内,而不是位于项内的另一个服务器控件内(否则,您需要先找到另一个控件,然后再在其中找到中继器)

另外,请确保您使用的是
rep_hello
ID而不是
innerreater

顺便说一句,你也可以在标记中这样做

<asp:repeater runat="server" id="innerRepeater"
    DataSource='<%# Eval("PropertyInParentObject") %>'  >
    ....
    ....
</asp:repeater>

....
....

您也可以使用
Container.DataItem
而不是
Eval
(并将其转换为父repeater项中的对象类型)。

您正在尝试查找ID为“innerRepeater”的repeater。 您应该改用“rep_hello”:


以下链接将为您提供最大帮助


你能不能也给我看一些中继器?哪里有例外?它是否真的找到了
innerRepeater
?如果它没有首先找到它,那么你就不能绑定到它。现在错误已经被删除,但是我仍然无法在内部Repeaterne中看到数据。我已经删除javascript以在两个Repeater中看到数据。请尽快帮助我。谢谢,我已经检查了ID,将Container.DataItem更改为Eval only后没有任何效果。谢谢你帮助我
Protected Sub rep_test_ItemDataBound(ByVal sender As Object, ByVal e As   System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rep_test.ItemDataBound
    Dim dt As New DataTable
    dt = obj.getdata()
    Dim innerRepeater As Repeater = DirectCast(e.Item.FindControl("rep_hello"), Repeater)
    innerRepeater.DataSource = dt
    innerRepeater.DataBind()
End Sub