ASP.NET中如何使用多重Repeater


 前台页面部分:

  <asp:Repeater id="rptCategories" runat="server">

  <HeaderTemplate>

  <table width="100%" border="0" cellspacing="0" cellpadding="0">

  </HeaderTemplate>

  <ItemTemplate>

  <!--分类名称-->

  <tr><th><%# DataBinder.Eval(Container.DataItem, "TypeName") %></th></tr>

  <!--分类下的产品-->

  <asp:Repeater id="rptProduct" runat="server">

  <ItemTemplate>

  <tr><td><a href='ProductInfo.aspx?Id=<%# DataBinder.Eval(Container.DataItem, "ID") %>'><%# DataBinder.Eval(Container.DataItem, "ProductName") %></a></td></tr>

  </ItemTemplate>

  </asp:Repeater>

  </ItemTemplate>

  <FooterTemplate>

  </table>

  </FooterTemplate>

  </asp:Repeater>

  后台代码部分(部分代码):

  //在绑定分类品名时,绑定分类下的产品

  private void rptCategories_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)

  {

  BLL.Products products =new BLL.Products();

  if (e.Item.ItemType == ListItemType.Item ||    e.Item.ItemType == ListItemType.AlternatingItem)

  {

  Repeater rptProduct = (Repeater) e.Item.FindControl("rptProduct");

  //找到分类Repeater关联的数据项

  DataRowView rowv = (DataRowView)e.Item.DataItem;

  //提取分类ID

  int CategorieId = Convert.ToInt32(rowv["ID"]);

  //根据分类ID查询该分类下的产品,并绑定产品Repeater

  rptProduct.DataSource = products.GetProductsByCategorieId(CategorieId);

  rptProduct.DataBind();

  }

  }

  另一种方法:

  前台:

  <!-- start parent repeater -->

  <asp:repeater id="parentRepeater" runat="server">

  <itemtemplate>

  <b><%# DataBinder.Eval(Container.DataItem,"au_id") %></b><br>

  <!-- start child repeater -->

  <asp:repeater id="childRepeater" datasource='<%# ((DataRowView)Container.DataItem)

  .Row.GetChildRows("myrelation") %>' runat="server">

  <itemtemplate>

  <%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%><br>

  </itemtemplate>

  </asp:repeater>

  <!-- end child repeater -->

  </itemtemplate>

  </asp:repeater>

  <!-- end parent repeater -->

  后台:public partial class NestedRepeater : System.Web.UI.Page

  {

  protected System.Web.UI.WebControls.Repeater childRepeater;//parentRepeater;

  public NestedRepeater()

  {

  Page.Init += new System.EventHandler(Page_Init);

  }

  public void Page_Load(object sender, EventArgs e)

  {

  //Create the connection and DataAdapter for the Authors table.

  SqlConnection cnn = new SqlConnection("server=.;database=pubs; user id=sa;pwd=;");

  SqlDataAdapter cmd1 = new SqlDataAdapter("select * from authors", cnn);

  //Create and fill the DataSet.

  DataSet ds = new DataSet();

  cmd1.Fill(ds, "authors");

  //Create a second DataAdapter for the Titles table.

  SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor", cnn);

  cmd2.Fill(ds, "titles");

  //Create the relation bewtween the Authors and Titles tables.

  ds.Relations.Add("myrelation",

  ds.Tables["authors"].Columns["au_id"],

  ds.Tables["titles"].Columns["au_id"]);

  //Bind the Authors table to the parent Repeater control, and call DataBind.

  parentRepeater.DataSource = ds.Tables["authors"];

  Page.DataBind();

  //Close the connection.

  cnn.Close();

  }

  private void Page_Init(object sender, EventArgs e)

  {

  InitializeComponent();

  }

  private void InitializeComponent()

  {

  this.Load += new System.EventHandler(this.Page_Load);

  }

  }


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3