DataList与Repeater嵌套绑定

时间:2022-06-20 10:30:35
<% @ Page Language = " C# "  AutoEventWireup = " true "  CodeFile = " home.aspx.cs "  Inherits = " home "   %>

< body >
    
< form id = " form1 "  runat = " server " >
              
< asp:DataList ID = " monitorTypeList "  runat = " server "  RepeatColumns = " 4 "  
                  onitemdatabound
= " monitorTypeList_ItemDataBound "  RepeatDirection = " Horizontal "  ItemStyle - VerticalAlign = " Top " >
              
< ItemTemplate >
                
< table  class = " conBox "  width = " 186 "  border = " 0 "  cellpadding = " 0 "  cellspacing = " 1 "  style = " margin-right:10px; " >
                  
< tr >
                    
< th >< a href = " <%#Eval( " plugpath " ) %> " ><% #Eval( " monitor_type_name " %></ a ></ th >
                  
</ tr >
                  
< asp:Repeater ID = " monitorConfigList "  runat = " server " >
                    
< ItemTemplate >
                  
< tr >
                    
< td >< a href = " <%#Eval( " plugpath " ) %>?monitor_id=<%#Eval( " monitor_id " ) %> " ><% #Eval( " monitor_name " %></ a ></ td >
                  
</ tr >
                    
</ ItemTemplate >
                 
</ asp:Repeater >
                
</ table >
            
            
</ ItemTemplate >
            
</ asp:DataList >
    
    
</ form >
</ body >

 home.aspx.cs

using  System;
using  System.Collections;
using  System.Configuration;
using  System.Data;
using  System.Linq;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.HtmlControls;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Xml.Linq;


public   partial   class  home : System.Web.UI.Page
{
    
protected   void  Page_Load( object  sender, EventArgs e)
    {
        myCheck.IsLoginNonReturn();
        
if  ( ! IsPostBack)
        {
            Bind_monitorTypeList();
        }
    }

    
protected   void  Bind_monitorTypeList()
    {
        
string  sql  =   " select monitor_type_id,monitor_type_name from monitor_type " ;
        DbConn conn 
=   new  DbConn();
        DataSet ds 
=  conn.DataSet(sql, " monitor_type " );
        monitorTypeList.DataSource 
=  ds.Tables[ 0 ];
        monitorTypeList.DataBind();
        ds.Dispose();
        conn.Close();
    }

    
protected   void  monitorTypeList_ItemDataBound( object  sender, DataListItemEventArgs e)
    {
        
if  (e.Item.ItemType  ==  ListItemType.Item  ||  e.Item.ItemType  ==  ListItemType.AlternatingItem)
        {
            
string  monitor_type_id  =  ((DataRowView)e.Item.DataItem).Row[ " monitor_type_id " ].ToString();
            Repeater monitorConfigList 
=  (Repeater)e.Item.FindControl( " monitorConfigList " );
            
if  (monitorConfigList  !=   null )
            {
                
string  sql  =   " select monitor_id,nonitor_name,plugpath from monitor where monitor_type_id= "   +  monitor_type_id;
                DbConn conn 
=   new  DbConn();
                DataSet ds 
=  conn.DataSet(sql,  " monitor " );
                monitorConfigList.DataSource 
=  ds.Tables[ 0 ];
                monitorConfigList.DataBind();
                ds.Dispose();
                conn.Close();
            }
        }
    }
}