Hallo,
Ik probeer volgens dit artikel een aantal tabellen hierarchish in een repeater te zetten.
Ik heb de tabellen Page, PageSubject en Subject. Ik maak vervolgens een Dataset en maak 2 relaties om deze aan elkaar te koppelen zoals hieronder:
In Page_Load vul ik de eerste repeater met de Page tabel.
In ItemDataBound van de eerste repeater, wil ik dan de geneste repeater vullen met pagesubject.
Hier staat het ook voor de derde tabel.
De html ziet er zo uit
Hier komt dan mijn probleem. De eerste twee tabellen laat ie goed zien, zoals in het artikel staat. Maar voor de tweede relatie gaat het niet goed. Hij komt niet in de ItemDataBound voor Repeater2, terwijl hij wel de data laat zien.
Alvast bedankt
Ik probeer volgens dit artikel een aantal tabellen hierarchish in een repeater te zetten.
Ik heb de tabellen Page, PageSubject en Subject. Ik maak vervolgens een Dataset en maak 2 relaties om deze aan elkaar te koppelen zoals hieronder:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| ' Dit dan drie keer.
sql = "SELECT * "
sql += " From PageSubject "
Dim daPageSubject As SqlDataAdapter = New SqlDataAdapter(sql, System.Configuration.ConfigurationSettings.AppSettings("DiaConnStr"))
daPageSubject.Fill(ds, "PageSubject")
'Maak twee relaties
Dim rel1 As DataRelation = New DataRelation("PageToPageSubject", ds.Tables("Page").Columns("PageId"), ds.Tables("PageSubject").Columns("PageId"), False)
ds.Relations.Add(rel1)
Dim rel2 As DataRelation = New DataRelation("PageSubjectToSubject", ds.Tables("PageSubject").Columns("SubjectId"), ds.Tables("Subject").Columns("SubjectId"), False)
ds.Relations.Add(rel2) |
In Page_Load vul ik de eerste repeater met de Page tabel.
code:
1
2
3
4
5
| Dim res As DataSet = New DataSet
res = db.GetSearchResults(str, conn)
Repeater1.DataSource = res.Tables("Page").DefaultView
Repeater1.DataBind() |
In ItemDataBound van de eerste repeater, wil ik dan de geneste repeater vullen met pagesubject.
Hier staat het ook voor de derde tabel.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| Private Sub Repeater1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater1.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
CType(e.Item.FindControl("Repeater2"), Repeater).DataSource = CType(e.Item.DataItem, DataRowView).CreateChildView("PageToPageSubject")
CType(e.Item.FindControl("Repeater2"), Repeater).DataBind()
End If
End Sub
Private Sub Repeater2_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles Repeater2.ItemDataBound
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
CType(e.Item.FindControl("Repeater3"), Repeater).DataSource = CType(e.Item.DataItem, DataRowView).CreateChildView("PageSubjectToSubject")
CType(e.Item.FindControl("Repeater3"), Repeater).DataBind()
End If
End Sub |
De html ziet er zo uit
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| <asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<table width="100%" border="0" cellspacing="0" cellpadding="2" >
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="left" valign="middle">
<%# DataBinder.Eval(Container.DataItem,"Title") %>
</td>
</tr>
<asp:Repeater id="Repeater2" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="left" valign="middle">
<%# DataBinder.Eval(Container.DataItem,"PageSubjectId") %>
</td>
</tr>
<asp:Repeater id="Repeater3" runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="left" valign="middle" style="text-indent: 10px;">
<%# DataBinder.Eval(Container.DataItem,"Text") %>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
</FooterTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater> |
Hier komt dan mijn probleem. De eerste twee tabellen laat ie goed zien, zoals in het artikel staat. Maar voor de tweede relatie gaat het niet goed. Hij komt niet in de ItemDataBound voor Repeater2, terwijl hij wel de data laat zien.
Alvast bedankt