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