ASP.NET中 Repeater嵌套

ylbtech-ASP.NET-Control-Bind: Repeater嵌套

 ASP.NET中 Repeater嵌套。

1.A,运行效果图返回顶部
1.B,源代码(主要代码摘要)返回顶部
/App_Code/DBConnection.cs
/App_Code/CategoryInfo.cs
View Code
using System.Collections.Generic;
public class CategoryInfo
{
    int categoryid;
    string categoryname;
    string categorydesc;
    IList<ArticleInfo> articles;

    /// <summary>
    /// 1,子嵌套数据
    /// </summary>
    public IList<ArticleInfo> Articles
    {
        get { return articles; }
        set { articles = value; }
    }

    public int Categoryid
    {
        get { return categoryid; }
        set { categoryid = value; }
    }

    public string Categoryname
    {
        get { return categoryname; }
        set { categoryname = value; }
    }

    public string Categorydesc
    {
        get { return categorydesc; }
        set { categorydesc = value; }
    }

    public CategoryInfo()
    {

    }

    public CategoryInfo(int categoryid, string categoryname, string categorydesc,IList<ArticleInfo> articles)
    {
        this.categoryid = categoryid;
        this.categoryname = categoryname;
        this.categorydesc = categorydesc;
        this.articles = articles;
    }
}
/App_Code/ArticleInfo.cs
/App_Code/CategoryOper.cs
View Code
using System.Data;

using System.Data.SqlClient;
using System.Collections.Generic;
public class CategoryOper
{
    public static IList<CategoryInfo> SelectAll()
    {
        IList<CategoryInfo> allcate = new List<CategoryInfo>();
        string sql = "select category.categoryid,categoryname,categorydesc,id,title,author from category inner join article on category.categoryid=article.categoryid order by category.categoryid";

        SqlConnection con = new DBConnection().Con;
        SqlCommand com = new SqlCommand();
        com.Connection = con;
        com.CommandText = sql;
        com.CommandType = CommandType.Text;

        con.Open();
        SqlDataReader sdr = com.ExecuteReader();
        int tempcategoryid=0;
        CategoryInfo cate=null;
        while (sdr.Read())
        {
            int categoryid=sdr.GetInt32(0);

            //如果类别改变则创建一个新的 cate 对象
            if(categoryid!=tempcategoryid)
            {
                cate = new CategoryInfo(sdr.GetInt32(0), sdr.GetString(1), sdr.GetString(2), new List<ArticleInfo>());
                allcate.Add(cate);  
                tempcategoryid = categoryid;    //把新类别编号付给标识
            }

            ArticleInfo art = new ArticleInfo(sdr.GetInt32(3), sdr.GetString(4), sdr.GetString(5));
            cate.Articles.Add(art);
        }
        con.Close();
        return allcate;

    }
    public CategoryOper()
    {
        //
        // TODO: 在此处添加构造函数逻辑
        //
    }
}
/App_Code/ArticleOper.cs
,6
/Default.aspx
View Code
<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="text-align:center">        
    
        <asp:Repeater ID="RepCate" runat="server">
            <HeaderTemplate>
                <table border="1">
                    <tr>
                        <td>分类编号</td>
                        <td>分类名称</td>
                        <td>分类描述</td>
                    </tr>                
            </HeaderTemplate>
            <ItemTemplate>
                    <tr>
                        <td><%#Eval("categoryid") %></td>
                        <td><%#Eval("categoryname") %></td>
                        <td><%#Eval("categorydesc") %></td>
                    </tr>
                    <tr>
                        <td>本类新闻</td>
                        <td colspan="2">
                        
                            <asp:Repeater ID="RepArticle" runat="server" DataSource='<%#Eval("articles") %>' >
                                <HeaderTemplate>
                                    <table border="1" style="background-color:#00FF00;">
                                        <tr>
                                            <td>新闻编号</td>
                                            <td>新闻标题</td>
                                            <td>新闻作者</td>
                                        </tr>
                                </HeaderTemplate>
                                <ItemTemplate>
                                        <tr>
                                            <td><%#Eval("id") %></td>
                                            <td>
                                                <asp:HyperLink ID="Hl1" runat="server" Text='<%#Eval("title") %>' NavigateUrl='<%#string.Format("ShowArticle.aspx?id={0}",Eval("id") ) %>' ></asp:HyperLink> 
                                            </td>
                                            <td><%#Eval("author") %></td>
                                        </tr>
                                </ItemTemplate>
                                <FooterTemplate>
                                    </table>
                                </FooterTemplate>
                            </asp:Repeater>
                            
                            
                        </td>
                    </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>
        
        
    </div>
    </form>
</body>
</html>
/Default.aspx.cs
View Code
using System;

public partial class _Default : System.Web.UI.Page 
{
    private void BindCategory()
    {
        RepCate.DataSource = CategoryOper.SelectAll();
        RepCate.DataBind();
    }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindCategory();
        }
    }
}
/web.config
 
1.C,资源下载返回顶部

https://files.cnblogs.com/ylbtech/WebForm-NestedRepeater.rar

warn 作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/ylbtech/p/2947571.html