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