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 ,如需转载请自行联系原作者
相关文章
|
2月前
|
SQL 开发框架 前端开发
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
ASP.NET WEB项目中GridView与Repeater数据绑定控件的用法
34 0
|
11月前
|
SQL 开发框架 .NET
ASP.NET 数据绑定详解 代码+步骤(下)
ASP.NET 数据绑定详解 代码+步骤
|
11月前
|
开发框架 .NET 数据库
ASP.NET 数据绑定详解 代码+步骤(上)
ASP.NET 数据绑定详解 代码+步骤