<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<!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 id="Head1" runat="server">
<title>Untitled Page</title>
<style type="text/css">
.R
{ background-color:Red;}
.G
{ background-color:Green;}
.Y
{ background-color:Yellow;}
</style>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server"
onitemdatabound="Repeater1_ItemDataBound">
<HeaderTemplate>
<table border="1">
</HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%#Eval("LineID")%>
</td>
<td>
<asp:Repeater ID="Repeater2" runat="server">
<ItemTemplate><span class='<%#Eval("Flag")%>'><%#Eval("Mcid")%></span>
</ItemTemplate>
</asp:Repeater>
</td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table></FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
后台:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Collections.Generic;
namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("LineID", typeof(string)));
dt.Columns.Add(new DataColumn("Mcid", typeof(string)));
dt.Columns.Add(new DataColumn("Flag", typeof(string)));
dt.Rows.Add("姓名", "小黑", "G");
dt.Rows.Add("姓名", "小张", "G");
dt.Rows.Add("姓名", "小王", "R");
dt.Rows.Add("姓名", "小李", "R");
dt.Rows.Add("姓名", "小官", "G");
dt.Rows.Add("姓名", "小李", "R");
dt.Rows.Add("年龄", "20", "G");
dt.Rows.Add("年龄", "30", "Y");
dt.Rows.Add("年龄", "40", "G");
dt.Rows.Add("年龄", "50", "Y");
dt.Rows.Add("年龄", "60", "G");
dt.Rows.Add("年龄", "60", "G");
dt.Rows.Add("性别", "女", "Y");
dt.Rows.Add("性别", "女", "G");
dt.Rows.Add("性别", "女", "Y");
dt.Rows.Add("性别", "女", "G");
dt.Rows.Add("性别", "女", "Y");
dt.Rows.Add("性别", "女", "G");
//List<Line> list = new List<Line>();
Dictionary<string, Line> source = new Dictionary<string, Line>();
foreach (DataRow dr in dt.Rows)
{
string key = dr["LineID"].ToString();
LineDetail linedetail = new LineDetail()
{
LineID = dr["LineID"].ToString(),
McID = dr["Mcid"].ToString(),
Flag = dr["Flag"].ToString()
};
if (source.ContainsKey(key))
{
source[key].Details.Add(linedetail);
}
else
{
Line line = new Line()
{
LineID = key,
Details = new List<LineDetail>()
};
line.Details.Add(linedetail);
source.Add(key, line);
}
}
Repeater1.DataSource = source.Values;
Repeater1.ItemDataBound += new RepeaterItemEventHandler(Repeater1_ItemDataBound);
Repeater1.DataBind();
}
protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
Repeater rep2 = e.Item.FindControl("Repeater2") as Repeater;
Line line = e.Item.DataItem as Line;
rep2.DataSource = line.Details;
rep2.DataBind();
}
}
}
public class Line
{
public string LineID { get; set; }
public IList<LineDetail> Details { get; set; }
}
public class LineDetail
{
public string LineID { get; set; }
public string McID { get; set; }
public string Flag { get; set; }
}
}
效果: