リピータを使用してカスタムテーブルを作成しています。しかし、次の行のツアーが前の行と一致しない場合は、表の小計を表示する方法を理解できません。ネストされたリピータは、親リピータに一致するデータを表示します
同様のものです。
row1 tour1
row2 tour 1
tour1 subtotal
row3 tour2
row4 tour2
subtotal
total
<asp:Repeater ID="ParentRepeater" runat="server" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<table border="1">
<tr>
<th>TOUR</th>
<th>THEME</th>
<th>ROUTE</th>
<th>DEPT</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%#Container.DataItem("tour")%></td>
<td align="center"><%#Container.DataItem("theme")%></td>
<td align="right"><%#Container.DataItem("route")%></td>
<td align="right"><%#Container.DataItem("dep7")%></td>
<asp:Repeater ID="ChildRepeater" runat="server"
DataSourceID="SqlDataSource2">
<HeaderTemplate>
<table border="1">
<tr>
<th>BOOKNO</th>
<th>PARTY</th>
<th>TOUR</th>
<th>THEME</th>
<th>ROUTE</th>
<th>DEPT</th>
<th>HOME</th>
<th>USERID</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td align="center"><%#Container.DataItem("bookno") %></td>
<td><%#Container.DataItem("party")%></td>
<td><%#Container.DataItem("tour")%></td>
<td align="center"><%#Container.DataItem("theme")%></td>
<td align="right"><%#Container.DataItem("route")%></td>
<td align="right"><%#Container.DataItem("dep7")%></td>
<td align="right"><%#Container.DataItem("home")%></td>
<td align="right"><%#Container.DataItem("userid")%></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
コード
Protected Sub ItemBound(ByVal sender As Object, ByVal args As RepeaterItemEventArgs)
If args.Item.ItemType = ListItemType.Item Then
Dim childRepeater As Repeater = DirectCast(args.Item.FindControl("ChildRepeater"), Repeater)
childRepeater.DataSource = SqlDataSource2
childRepeater.DataBind()
End If
End Sub
後ろが、これは、ネストされたリピータ内のすべてのデータの例ツアー、テーマのparentrepeaterフィールド と一致していないものを示し、dep7は、子リピータに一致する必要があります
この記事のように、ネストされたリピータを2つ使用することができます。[ネストされたリピータをASP.NETで使用するための簡単なガイド](http://www.codeproject.com/KB/aspnet/AspNetNestedRepeaters.aspx) –
e.rowがe.row.index - 1カラムにあったかどうかをチェックして、単純なif文を書くことを試みていましたが、小計を行うのは – MyHeadHurts
です小計を動的に含む行のHTMLを生成する必要があります。私はそれも動作するかもしれないと思うが、私は自動HTML生成がネストされたリピーター(少なくともすべてのHTMLをページ内にまとめたもの)よりも面倒だと思う。 –