0

我正在使用 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 指向的表的父级”。

我以前没有使用过嵌套中继器,所以不太确定我做错了什么。

4

0 回答 0