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();
                    }

                }

            }

    最后的效果如图:


  • 相关阅读:
    css面试题目
    5. React-Router05 BrowserRouter 和hashrouter
    5. React-Router03 withRouter
    5. React-Router01
    CVE-2019-0708—微软RDP远程桌面代码执行漏洞复现
    正则表达式学习汇总
    CTF---PHP安全考题
    快速搭建主动诱导型开源蜜罐框架系统--hfish
    python--爬取网页存在某字符
    Linux 实用指令之查看端口开启情况
  • 原文地址:https://www.cnblogs.com/yvesliao/p/1416271.html
Copyright © 2011-2022 走看看