repeater嵌套

例子一:

.aspx

<asp:repeater id="repeaterMain" Runat="server" OnItemDataBound="repeaterMain_ItemDataBound">
<ItemTemplate>
<table>
<tr><td>
<a href= " <%#"Details.aspx?au_id=" + DataBinder.Eval(Container,"DataItem.au_id")%> "> <%#DataBinder.Eval(Container,"DataItem.au_id")%> </a> 大类<br>
</td>
</tr>
<asp:repeater ID="repeaterSub" Runat="server">
<ItemTemplate>
<tr>
<td>
<a href= " <%#"Details.aspx?title_id=" + DataBinder.Eval(Container,"DataItem.title_id")%> "> <%#DataBinder.Eval(Container, "DataItem.title_id")%> </a> 小类
</td>
</tr>
</ItemTemplate>
</asp:repeater>
</table>
</ItemTemplate>

</asp:repeater>

.cs

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindMain();
}
}

private void BindMain()
{
SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=pubs");
SqlDataAdapter da = new SqlDataAdapter("select au_id from authors", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
repeaterMain.DataSource = ds.Tables[0].DefaultView;
repeaterMain.DataBind();
cn.Close();
}

protected void repeaterMain_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string au_id = ((DataRowView)e.Item.DataItem).Row["au_id"].ToString();
Repeater repeaterSub = (Repeater)e.Item.FindControl("repeaterSub");
if (repeaterSub != null)
{
SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=pubs");
SqlCommand cmd = new SqlCommand("select title_id from titleauthor where au_id = @au_id", cn);
cmd.Parameters.Add("@au_id", SqlDbType.VarChar, 11).Value = au_id;
cn.Open();
repeaterSub.DataSource = cmd.ExecuteReader();
repeaterSub.DataBind();
cn.Close();
}
}
}

例子二:

.aspx

<asp:repeater id="repeaterMain" Runat="server" OnItemDataBound="repeaterMain_ItemDataBound">
<ItemTemplate>
<table>
<tr><td>
<a href= " <%#"Details.aspx?classid=" + DataBinder.Eval(Container,"DataItem.id")%> "> <%#DataBinder.Eval(Container,"DataItem.性质")%> </a> 大类<br>
</td>
</tr>
<asp:repeater ID="repeaterSub" Runat="server">
<ItemTemplate>
<tr>
<td>
<a href= " <%#"Details.aspx?id=" + DataBinder.Eval(Container,"DataItem.id")%> "> <%#DataBinder.Eval(Container, "DataItem.标题")%> </a> 小类
</td>
</tr>
</ItemTemplate>
</asp:repeater>
</table>
</ItemTemplate>

</asp:repeater>

.cs

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindMain();
}
}

private void BindMain()
{
SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=lqnyxx");
SqlDataAdapter da = new SqlDataAdapter("select 性质,id from 供求性质表", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
repeaterMain.DataSource = ds.Tables[0].DefaultView;
repeaterMain.DataBind();
cn.Close();
}

protected void repeaterMain_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
string au_id = ((DataRowView)e.Item.DataItem).Row["id"].ToString();
Repeater repeaterSub = (Repeater)e.Item.FindControl("repeaterSub");
if (repeaterSub != null)
{
SqlConnection cn = new SqlConnection(@"server=(local);uid=sa;pwd=1234567890;database=lqnyxx");
SqlCommand cmd = new SqlCommand("select * from 供求信息 where 性质 = @au_id", cn);
cmd.Parameters.Add("@au_id", SqlDbType.VarChar, 11).Value = au_id;
cn.Open();
repeaterSub.DataSource = cmd.ExecuteReader();
repeaterSub.DataBind();
cn.Close();
}
}
}

/*注意写上 using System.Data.SqlClient; */

posted on 2011-08-30 17:02  品言  阅读(176)  评论(0编辑  收藏  举报