ADO.NET嵌套数据绑定

本文介绍了一种在ASP.NET中使用Repeater控件进行主从数据绑定的方法,包括两种实现方式:通过直接设置DataSource属性和利用ItemDataBound事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自动获取数据库中的主从关系数据,以下是获取省份及省份对应的城市,代码如下:

None.gif<asp:repeater ID="Repeater1" runat="server">
None.gif        
<ItemTemplate >
ExpandedBlockStart.gifContractedBlock.gif            
<span style ="font-weight :bold "><%dot.gif#Eval ("pname"%></span>
None.gif            
<ul>
None.gif                
<asp:Repeater ID="detal" runat ="server" DataSource ='<%#GetCity(Eval("pid").ToString()) %>'>
None.gif                    
<ItemTemplate >
ExpandedBlockStart.gifContractedBlock.gif                        
<li><%dot.gif#Eval("city_name"%></li> 
None.gif                    
</ItemTemplate>
None.gif                
</asp:Repeater>
None.gif            
</ul>
None.gif        
</ItemTemplate>
None.gif    
</asp:repeater>

重点:DataSource ='<%#Getawd(Eval("pid").ToString()) %>'   调用GetCity方法获取子类

None.gifprotected void Page_Load(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
if (!Page.IsPostBack)
InBlock.gif            BindGrid();
ExpandedBlockEnd.gif    }

None.gif    
//获取大类的类别
None.gif
    protected void BindGrid()
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
string cmdText = "select pid, pname from pro";
InBlock.gif        DataTable dt 
= vc.GetDataTable(cmdText );
InBlock.gif        Repeater1.DataSource 
= dt;
InBlock.gif        Repeater1.DataBind();
ExpandedBlockEnd.gif    }

None.gif    
//获取小类内容
None.gif
    protected DataTable GetCity(string  id)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif        
string cmdText = "select city_name from city where promo_id = " + id + "";
InBlock.gif        DataTable dt 
= vc.GetDataTable(cmdText);
InBlock.gif        
return dt;
ExpandedBlockEnd.gif    }


实现效果如下:
 

方法二:在第一个Repeater的ItemDataBound事件中绑定第二个Repeater,HTML代码中第一个Repeater不赋予DataSource
None.gifprotected void repeatTitle_ItemDataBound(object sender, RepeaterItemEventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif            DataRowView dr 
= (DataRowView)e.Item.DataItem;
InBlock.gif            DataTable mydt 
= GetCity(dr[0].ToString());
InBlock.gif            
if (mydt.Rows.Count > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                Repeater myRepeat 
= (Repeater)e.Item.FindControl("repeatCont");
InBlock.gif                myRepeat.DataSource 
= mydt;
InBlock.gif                myRepeat.DataBind();
InBlock.gif                mydt.Dispose();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                e.Item.Visible 
= false;  //没有数据时不显示
ExpandedSubBlockEnd.gif
            }

ExpandedBlockEnd.gif    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值