ASP.NET中 Repeater嵌套
1 View Code 2 3 using System.Collections.Generic; 4 public class CategoryInfo 5 { 6 int categoryid; 7 string categoryname; 8 string categorydesc; 9 IList<ArticleInfo> articles; 10 11 /// <summary> 12 /// 1,子嵌套数据 13 /// </summary> 14 public IList<ArticleInfo> Articles 15 { 16 get { return articles; } 17 set { articles = value; } 18 } 19 20 public int Categoryid 21 { 22 get { return categoryid; } 23 set { categoryid = value; } 24 } 25 26 public string Categoryname 27 { 28 get { return categoryname; } 29 set { categoryname = value; } 30 } 31 32 public string Categorydesc 33 { 34 get { return categorydesc; } 35 set { categorydesc = value; } 36 } 37 38 public CategoryInfo() 39 { 40 41 } 42 43 public CategoryInfo(int categoryid, string categoryname, string categorydesc,IList<ArticleInfo> articles) 44 { 45 this.categoryid = categoryid; 46 this.categoryname = categoryname; 47 this.categorydesc = categorydesc; 48 this.articles = articles; 49 } 50 }
1 View Code 2 3 using System.Data; 4 5 using System.Data.SqlClient; 6 using System.Collections.Generic; 7 public class CategoryOper 8 { 9 public static IList<CategoryInfo> SelectAll() 10 { 11 IList<CategoryInfo> allcate = new List<CategoryInfo>(); 12 string sql = "select category.categoryid,categoryname,categorydesc,id,title,author from category inner join article on category.categoryid=article.categoryid order by category.categoryid"; 13 14 SqlConnection con = new DBConnection().Con; 15 SqlCommand com = new SqlCommand(); 16 com.Connection = con; 17 com.CommandText = sql; 18 com.CommandType = CommandType.Text; 19 20 con.Open(); 21 SqlDataReader sdr = com.ExecuteReader(); 22 int tempcategoryid=0; 23 CategoryInfo cate=null; 24 while (sdr.Read()) 25 { 26 int categoryid=sdr.GetInt32(0); 27 28 //如果类别改变则创建一个新的 cate 对象 29 if(categoryid!=tempcategoryid) 30 { 31 cate = new CategoryInfo(sdr.GetInt32(0), sdr.GetString(1), sdr.GetString(2), new List<ArticleInfo>()); 32 allcate.Add(cate); 33 tempcategoryid = categoryid; //把新类别编号付给标识 34 } 35 36 ArticleInfo art = new ArticleInfo(sdr.GetInt32(3), sdr.GetString(4), sdr.GetString(5)); 37 cate.Articles.Add(art); 38 } 39 con.Close(); 40 return allcate; 41 42 } 43 public CategoryOper() 44 { 45 // 46 // TODO: 在此处添加构造函数逻辑 47 // 48 } 49 }
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>
1 View Code 2 3 using System; 4 5 public partial class _Default : System.Web.UI.Page 6 { 7 private void BindCategory() 8 { 9 RepCate.DataSource = CategoryOper.SelectAll(); 10 RepCate.DataBind(); 11 } 12 protected void Page_Load(object sender, EventArgs e) 13 { 14 if (!IsPostBack) 15 { 16 BindCategory(); 17 } 18 } 19 }