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