ADO.NET嵌套数据绑定

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

None.gif < asp:repeater  ID ="Repeater1"  runat ="server" >
None.gif        
< ItemTemplate  >
ExpandedBlockStart.gif            
< span  style  ="font-weight :bold " > <% #Eval ("pname" %> </ span >
None.gif            
< ul >
None.gif                
< asp:Repeater  ID ="detal"  runat  ="server"  DataSource  ='<%#GetCity(Eval("pid").ToString())  % > '>
None.gif                    
< ItemTemplate  >
ExpandedBlockStart.gif                        
< li > <% #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.gif protected   void  Page_Load( object  sender, EventArgs e)
ExpandedBlockStart.gif    
{
InBlock.gif        
if (!Page.IsPostBack)
InBlock.gif            BindGrid();
ExpandedBlockEnd.gif    }

None.gif    
// 获取大类的类别
None.gif
     protected   void  BindGrid()
ExpandedBlockStart.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.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.gif protected   void  repeatTitle_ItemDataBound( object  sender, RepeaterItemEventArgs e)
ExpandedBlockStart.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.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.gif            
{
InBlock.gif                e.Item.Visible 
= false;  //没有数据时不显示
ExpandedSubBlockEnd.gif
            }

ExpandedBlockEnd.gif    }
本文转自chy710博客园博客,原文链接:http://www.cnblogs.com/chy710/archive/2007/05/14/745590.html ,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值