// series、articleの各テーブルからDataSetにデータを取得
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM series", db);
DataSet ds = new DataSet();
db.Open();
da.Fill(ds, "series");
da.SelectCommand = new SqlCommand("SELECT * FROM article",db);
da.Fill(ds, "article");
db.Close();
<%@ Page Language="VB" ContentType="text/html" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>
<script runat="Server">
Sub Page_Load(sender As Object, e As EventArgs)
Dim db As New SqlConnection("Data Source=(local);User ID=sa;Password=sa;Persist Security Info=True;Initial Catalog=dotnet")
' series、articleの各テーブルからDataSetにデータを取得
Dim da As New SqlDataAdapter("SELECT * FROM series", db)
Dim ds As New DataSet()
db.Open()
da.Fill(ds, "series")
da.SelectCommand = New SqlCommand("SELECT * FROM article", db)
da.Fill(ds, "article")
db.Close()
' DataSet内のseriesテーブル、articleテーブルに対して
' リレーションを設定
ds.Relations.Add("SeriesRelate", _
ds.Tables("series").Columns("sid"),ds.Tables("article").Columns("sid"))
rep.DataSource = ds.Tables("series")
rep.DataBind()
End Sub
' 子テーブルのDataViewオブジェクトを取得
Function GetChild(item As Object, relName As String) As DataView
Return CType(item, DataRowView).CreateChildView(relName)
End Function
</script>
<asp:Repeater id="rep" runat="Server">
<HeaderTemplate>
<dl>
</HeaderTemplate>
<ItemTemplate>
<dt>
<%# DataBinder.Eval(Container.DataItem,"sTitle") %>
</dt>
<dd>
<asp:Repeater id="repArt" runat="Server"
DataSource='<%# GetChild(Container.DataItem,"SeriesRelate") %>'>
<HeaderTemplate>
<ol>
</HeaderTemplate>
<ItemTemplate>
<li>
<asp:HyperLink id="link" runat="Server"
NavigateUrl='<%# DataBinder.Eval(Container.DataItem,"url") %>'
Text='<%# DataBinder.Eval(Container.DataItem,"aTitle") %>' />
</li>
</ItemTemplate>
<FooterTemplate>
</ol>
</FooterTemplate>
</asp:Repeater>
</dd>
</ItemTemplate>
<FooterTemplate>
</dl>
</FooterTemplate>
</asp:Repeater>