SQL Server に 2 つのテーブルがあります。1 つのテーブルにはすべてのスーパーヒーローのリストがあり、もう 1 つのテーブルには能力のリストがあります。現在、実行時に子リピーターは、親テーブルに関連するアイテムのみを取得する必要があるときに、テーブル内のすべてのアイテムを取得します。私のaspxページには、次のようなネストされたリピーターがあります。
<asp:Repeater id="rptHero" runat="server" DataSourceID="sdsHeros" OnItemDataBound="rptHero_ItemDataBound">
<ItemTemplate>
<table>
<tr>
<td> <%# Eval("HeroName")%> </td>
<asp:Repeater id="rptAbility" runat="server" >
<ItemTemplate>
<tr>
<td> <%# Eval("AbilityName")%> </td>
</tr>
</ItemTemplate>
</asp:Repeater>
</tr>
</table>
<p> </p>
</ItemTemplate>
</asp:Repeater>
<asp:SqlDataSource ID="sdsHero" runat="server" ConnectionString="<%$ ConnectionStrings:SiteSqlServer2 %>"
SelectCommand="SELECT [num], [HeroName] FROM [Super_Heros]"></asp:SqlDataSource>
<asp:SqlDataSource ID="sdsAbility" runat="server" ConnectionString="<%$ ConnectionStrings:SiteSqlServer2 %>"
SelectCommand="SELECT [num], [AbilityName] FROM [Super_Ability]"></asp:SqlDataSource>
そして、私のコードビハインドには次のものがあります。
protected void rptHero_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView row = (DataRowView)e.Item.DataItem;
Repeater nestedRepeater = e.Item.FindControl("rptAbility") as Repeater;
nestedRepeater.DataSource = sdsAbility;
nestedRepeater.DataBind();
}
}
例 1と例 2に続いて、私たちの優れた常連客が Stack Overflow に投稿しましたが、これは機能するはずですが、SQLJoin のように[num]
、親リピーターの が子リピーターの と比較される部分をスキップしていると思います。[HeroID]