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,資源下載返回頂部

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

warn 作者:ylbtech
出處:http://ylbtech.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM