.net里repeater嵌套使用的完整代码

 把两个表的数据都读出来,建立两个表的关系  

ds.Relation.Add();   

 

然后在父Repeater的ItemDataBind事件中找到子Repeater   

再根据关系找到子Repeater对应的数据源,绑定上ok。

页面上:

<asp:Repeater   id="Repeater1"   runat="server">   
  <HeaderTemplate>   
  <table   width="500">   
  <tr   bgcolor=blue>   
  <td>用户留言显示</td>   
  </tr>   
  </HeaderTemplate>   
  <FooterTemplate>   
  </table>   
  </FooterTemplate>   
  <ItemTemplate>   
  <tr   bgcolor=aaaaaa>   
  <td>用户名:<%#DataBinder.Eval(Container.DataItem,"username")%></td>   
  </tr>   
  <tr>   
  <td>用户留言的显示</td>   
  </tr>   
  <tr>   
  <td><asp:Repeater   id="Repeater2"   runat="server">   
  <ItemTemplate>   
  留言信息<%#DataBinder.Eval(Container.DataItem,"content")%><br>   
  </ItemTemplate>   
  </asp:Repeater></td>   
  </tr>   
  </ItemTemplate>   
  </asp:Repeater>   

 

 

cs代码:

using   System;   
using   System.Collections;   
using   System.ComponentModel;   
using   System.Data;   
using   System.Drawing;   
using   System.Web;   
using   System.Web.SessionState;   
using   System.Web.UI;   
using   System.Web.UI.WebControls;   
using   System.Web.UI.HtmlControls;   
using   System.Data.SqlClient;

namespace AdoDotNet_Demo
{
    ///   <summary>   
    ///   RepeaterLink1   的摘要说明。   
    ///   </summary>   
    public class RepeaterLink1 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Repeater Repeater2;
        protected System.Web.UI.WebControls.Repeater Repeater1;

        private void Page_Load(object sender, System.EventArgs e)
        {
            //   在此处放置用户代码以初始化页面   
            if (!Page.IsPostBack)
            {
                string strconn = "server=.;uid=sa;   pwd=;database=myweb";
                SqlConnection conn = new SqlConnection(strconn);
                SqlDataAdapter da = new SqlDataAdapter("select   *   from   userinfo", conn);
                DataSet ds = new DataSet();
                da.Fill(ds, "user");
                SqlDataAdapter da1 = new SqlDataAdapter("select   *   from   content", conn);
                da1.Fill(ds, "content");
                ds.Relations.Add("relation1", ds.Tables["user"].Columns["UserName"], ds.Tables["content"].Columns["UserName"]);

                Repeater1.DataSource = ds.Tables["user"];
                Repeater1.DataBind();
            }
        }

        #region   Web   窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //   
            //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。   
            //   
            InitializeComponent();
            base.OnInit(e);
        }

        ///   <summary>   
        ///   设计器支持所需的方法   -   不要使用代码编辑器修改   
        ///   此方法的内容。   
        ///   </summary>   
        private void InitializeComponent()
        {
            this.Repeater1.ItemDataBound += new System.Web.UI.WebControls.RepeaterItemEventHandler(this.Repeater1_ItemDataBound);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        private void Repeater1_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item)
            {
                //repeater1行数据获得到   
                DataRowView drv = (DataRowView)e.Item.DataItem;
                DataView dv = drv.CreateChildView("relation1");

                //根据行数据得到repeater2的数据源   

                //找到当前行中repeater2   
                System.Web.UI.WebControls.Repeater r = (System.Web.UI.WebControls.Repeater)e.Item.FindControl("Repeater2");
                r.DataSource = dv;
                r.DataBind();
            }
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值