zoukankan      html  css  js  c++  java
  • Repeater嵌套,非常简单

    前台代码:

            <asp:Repeater ID="Repeater1" runat="server" OnItemDataBound="Repeater1_OnItemDataBound">
                
    <ItemTemplate>
                    
    <p>
                        
    <href='test.aspx?Category=<%# Eval("Id") %>'><%# Eval("Id") %></a>
                    
    </p>
                    
    <asp:Repeater ID="Repeater2" runat="server">
                        
    <ItemTemplate>
                            
    <li><href='<%# Eval("href") %>'>
                                
    <%# Eval("text")%></a></li>
                        
    </ItemTemplate>
                    
    </asp:Repeater>
                
    </ItemTemplate>
            
    </asp:Repeater>

    使用的类结构是这样的,Category类包含了一个Link类的集合

        public class Cateogory
        
    {
            
    public int Id getset; }
            
    public List<Link> Links getset; }
        }


        
    public class Link
        
    {
            
    public string href getset; }
            
    public string text getset; }
        }

    为了演示,不从数据库读取,自己填充一些数据

            private static List<Cateogory> GetData()
            
    {
                List
    <Cateogory> categories = new List<Cateogory>();
                
    for (int i = 0; i < 5; i++)
                
    {
                    Cateogory c 
    = new Cateogory();
                    c.Id 
    = i;
                    List
    <Link> lst = new List<Link>();
                    
    for (int j = 0; j < 3; j++)
                    
    {
                        Link l 
    = new Link();
                        l.href 
    = "test.aspx?Category=" + i + "&Id=" + j;
                        l.text 
    = "Cateogory:" + i + ";Id:" + j;
                        lst.Add(l);
                    }

                    c.Links 
    = lst;

                    categories.Add(c);
                }

                
    return categories;
            }

    Page_Load的时候绑定Repeater1

            protected void Page_Load(object sender, EventArgs e)
            
    {
                List
    <Cateogory> categories = GetData();

                Repeater1.DataSource 
    = categories;
                Repeater1.DataBind();
            }


    关键在这里了,Repeater1绑定的时候,方法里要获取子类的集合,如果是数据库,应该是获取Id,再从数据库中根据Id取数据列表.

            protected void Repeater1_OnItemDataBound(object sender, RepeaterItemEventArgs e)
            
    {
                
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                
    {
                    Repeater rpt 
    = e.Item.FindControl("Repeater2"as Repeater;
                    
    if (rpt != null)
                    
    {
                        Cateogory category 
    = e.Item.DataItem as Cateogory;
                        rpt.DataSource 
    = category.Links;
                        rpt.DataBind();
                    }

                }

            }

    最后的效果如图:


  • 相关阅读:
    软件测试技术实战 设计、工具及管理(51Testing软件测试网作品系列)
    MATLAB智能算法超级学习手册
    HTML与CSS入门经典(第9版)
    深入理解Android 5 源代码
    中文版Dreamweaver CS6基础培训教程(第2版)
    可用性测试手册(第2版)
    网络综合布线系统与施工技术第4版
    PHP核心技术与最佳实践(第2版)
    [OC Foundation框架
    [OC Foundation框架
  • 原文地址:https://www.cnblogs.com/yvesliao/p/1416271.html
Copyright © 2011-2022 走看看