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 が指すテーブルの親ではありません」です。
以前にネストされたリピーターを使用したことがないので、何が間違っているのかよくわかりません。