Repeater嵌套绑定数据

本文介绍如何使用 ASP.NET 中的 Repeater 控件进行多层次的数据绑定,通过示例展示了外层 Repeater 控件加载数据及触发 ItemDataBound 事件来动态设置内层 Repeater 控件的数据源的方法。
 
方法1:用 <%#   % >方法给内层repeater设置datasource,这个简单点 

方法2:使用ItemDataBound事件 
帮别人做的例子,请参考 
//aspx 
<body > 
        
<form   id= "form1 "   runat= "server " > 
                        
<asp:repeater   id= "repeaterMain "   Runat= "server "   OnItemDataBound= "repeaterMain_ItemDataBound " > 
                        
<ItemTemplate > 
                        
<a   href= &apos; <%"Details.aspx?au_id= "   +   DataBinder.Eval(Container, "DataItem.au_id ")% > &apos; > <%#DataBinder.Eval(Container, "DataItem.au_id ")% > </>   
                                
<asp:repeater   ID= "repeaterSub "   Runat= "server " > 
                                
<ItemTemplate > 
                                          
<a   href= &apos; <%"Details.aspx?title_id= "   +   DataBinder.Eval(Container, "DataItem.title_id ")% > &apos; > <%#DataBinder.Eval(Container,   "DataItem.title_id ")% > </> 
                                
</ItemTemplate > 
                                
</asp:repeater > 
                        
</ItemTemplate > 
                        
</asp:repeater > 
        
</form > 

//aspx.cs 
        private   void   BindMain() 
        

                SqlConnection   cn   
=   new   SqlConnection(@ "server=.SQLExpress;uid=sa;pwd=password;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   Page_Load(object   sender,   EventArgs   e) 
        

                
if   (!IsPostBack) 
                

                        BindMain(); 
                }
 
        }
 

        
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=.SQLExpress;uid=sa;pwd=password;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(); 
                        }
 
                }
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值