我正在使用 VB 在 ASP.NET 中使用嵌套中继器制作一些戏剧。
我已经搜索了这个和其他一些论坛,但无法解决我的代码问题。我发现的所有其他示例都在使用 XML 数据源,或者在数据集中使用多个表。我的数据集仅包含 1 个包含所有必要字段的表。
我本质上想创建一个事件日历......例如
-September
Event 1
Event 2
-October
Event 3
-November
Event 4
Event 5
Event 6
所有信息都存储在我的数据库中的 1 个表中。
到目前为止我的代码...
aspx
<asp:repeater id="rptCalendar" runat="server">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "Month")%>
<asp:repeater id="NestedRepeater" runat="server">
<ItemTemplate>
<%#DataBinder.Eval(Container.DataItem, "EventName")%>
<br>
</ItemTemplate>
</asp:repeater>
</ItemTemplate>
</asp:repeater>
aspx.vb
Protected Sub rptCalendar_ItemDataBound(sender As Object, e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptCalendar.ItemDataBound
Dim dv As DataRowView = e.Item.DataItem
If e.Item.ItemType = ListItemType.Item OrElse e.Item.ItemType = ListItemType.AlternatingItem Then
Dim nestedrepeater As Repeater = e.Item.FindControl("NestedRepeater")
Dim drv As DataRowView = DirectCast(e.Item.DataItem, DataRowView)
nestedrepeater.DataSource = drv.CreateChildView("EventName")
nestedrepeater.DataBind()
End If
End Sub
我的 Page_Load 事件只是将整个表加载到一个名为 dsEvents 的数据集中并绑定它。数据库看起来像这样。
-Events
EventID
EventName
EventDate
Month
Day
我得到的错误消息是“关系不是此 DataView 指向的表的父级”。
我以前没有使用过嵌套中继器,所以不太确定我做错了什么。