• 数据控件嵌套的几种方法


    俺的方法:
    <asp:Repeater ID="myrpList" runat="server">
              
    <HeaderTemplate>
              
    <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
              
    </HeaderTemplate>
              
    <ItemTemplate>
                
    <tr>
                  
    <td width="4%" height="25" valign="top">&nbsp;</td>
                  
    <td width="96%" valign="top"><strong><%Eval("classname")%></strong></td>
                
    </tr>
                
    <tr>
                  
    <td height="25" valign="top">&nbsp;</td>
                  
    <td valign="top">
                   
    <asp:DataList ID="mydList" runat="server"><HeaderTemplate>
                    
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                      
    </HeaderTemplate>         
                        
    <ItemTemplate>
                      
    <tr>
                        
    <td>&nbsp;<%Eval("title")%></td>
                      
    </tr>
                        
    </ItemTemplate>
                        
    <FooterTemplate>
                    
    </table></FooterTemplate></asp:DataList></td>
                
    </tr> 
                
    </ItemTemplate>
                
    <FooterTemplate>
              
    </table> 
              
    </FooterTemplate>             
              
    </asp:Repeater>

    CS:
        void BinData()
        
    {
            WebClass.ArticleList tmp 
    = new WebClass.ArticleList();
            DataTable dt 
    = tmp.ListClass();
            
    this.myrpList.DataSource = dt;
            
    this.myrpList.DataBind();

            
    int strID;
            
    foreach (RepeaterItem it in this.myrpList.Items)
            
    {
                
    int i = int.Parse(it.ItemIndex.ToString());
                strID 
    = int.Parse(dt.Rows[i]["id"].ToString());
                DataList dlist 
    = (DataList)it.FindControl("mydList");

                dlist.DataSource 
    = tmp.ShowClassAricle(strID);
                dlist.DataBind();
            }

        }

    网上看到的:
    //在绑定分类品名时,绑定分类下的产品 
    private void rptCategories_ItemDataBound(object sender, System.Web.UI.WebControls.RepeaterItemEventArgs e) 

        BLL.Products products 
    =new BLL.Products(); 
        
    if (e.Item.ItemType == ListItemType.Item ||    e.Item.ItemType == ListItemType.AlternatingItem)  
        

            Repeater rptProduct 
    = (Repeater) e.Item.FindControl("rptProduct"); 
            
    //找到分类Repeater关联的数据项 
            DataRowView rowv = (DataRowView)e.Item.DataItem; 
            
    //提取分类ID 
            int CategorieId = Convert.ToInt32(rowv["ID"]); 
            
    //根据分类ID查询该分类下的产品,并绑定产品Repeater 
            rptProduct.DataSource = products.GetProductsByCategorieId(CategorieId); 
            rptProduct.DataBind(); 
        }
     
    }
     

    还有一种方法:
    <!-- start parent repeater -->
    <asp:repeater id="parentRepeater" runat="server">
       
    <itemtemplate>
          
    <b><%# DataBinder.Eval(Container.DataItem,"au_id"%></b><br>

          
    <!-- start child repeater -->
          
    <asp:repeater id="childRepeater" datasource='<%# ((DataRowView)Container.DataItem)
          .Row.GetChildRows("myrelation") %
    >' runat="server">

             
    <itemtemplate>
                
    <%# DataBinder.Eval(Container.DataItem, "[\"title_id\"]")%><br>
             
    </itemtemplate>
          
    </asp:repeater>
          
    <!-- end child repeater -->

       
    </itemtemplate>
    </asp:repeater>
    <!-- end parent repeater -->

    cs:
       public void Page_Load(object sender, EventArgs e)
        
    {
            
    //Create the connection and DataAdapter for the Authors table.
            SqlConnection cnn = new SqlConnection("server=.;database=pubs; user id=sa;pwd=;");
            SqlDataAdapter cmd1 
    = new SqlDataAdapter("select * from authors", cnn);

            
    //Create and fill the DataSet.
            DataSet ds = new DataSet();
            cmd1.Fill(ds, 
    "authors");

            
    //Create a second DataAdapter for the Titles table.
            SqlDataAdapter cmd2 = new SqlDataAdapter("select * from titleauthor", cnn);
            cmd2.Fill(ds, 
    "titles");

            
    //Create the relation bewtween the Authors and Titles tables.
            ds.Relations.Add("myrelation",
            ds.Tables[
    "authors"].Columns["au_id"],
            ds.Tables[
    "titles"].Columns["au_id"]);

            
    //Bind the Authors table to the parent Repeater control, and call DataBind.
            parentRepeater.DataSource = ds.Tables["authors"];
            Page.DataBind();

            
    //Close the connection.
            cnn.Close();
        }

  • 相关阅读:
    DataGridView 设置行不可见时,与货币管理器的位置关联的行不能设置为不可见
    DataGridView 冻结列后出现 无法添加该列,原因是它被冻结并被置于未冻结的列之后
    sql 2000 查询中增加序号列,自动增加列
    SQL 语法大全
    清除vs2003vs2008起始页最近打开项目
    ALTER TABLE 修改表时 因为有一个或多个对象访问此列
    UNIX上C++程序设计守则(信号和线程)(上)
    Thread Cancel 指南
    [C++再学习系列] 深入new/delete:New的3种形态
    设计模式学习(六):重构与模式,推荐书籍(完)
  • 原文地址:https://www.cnblogs.com/cnaspnet/p/938946.html
Copyright © 2020-2023  润新知