代码如下:
前台:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>无标题页</title> </head> <style type="text/css"> table, tr, td, th { border: 1px solid black; } table { border-collapse: collapse; } </style> <body> <form id="form1" runat="server"> <div> <asp:Repeater ID="repeater" runat="server"> <HeaderTemplate> <table> <tr> <th> 姓名 </th> <th> 分数 </th> <th> 分数总计 </th> <th> 平均分 </th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td> <%#Eval("Name") %> </td> <td> <%#Eval("Score") %> </td> <%#!string.IsNullOrEmpty(Eval("Count").ToString())?"<td rowspan='"+(this.repeater.DataSource as System.Data.DataTable).Rows.Count+"'>"+Eval("Count")+"</td>":"" %> <%#!string.IsNullOrEmpty(Eval("Avg").ToString()) ? "<td rowspan='" + (this.repeater.DataSource as System.Data.DataTable).Rows.Count + "'>" + Eval("Avg") + "</td>" : ""%> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> </div> </form> </body> </html>
后台代码:
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { this.repeater.DataSource = GetScore(); this.DataBind(); } /// <summary> /// 模拟数据 /// </summary> /// <returns>成绩数据</returns> public DataTable GetScore() { //模拟数据 DataTable dt = new DataTable(); dt.Columns.Add("Name"); dt.Columns.Add("Score"); dt.Columns["Name"].DataType = typeof(string); dt.Columns["Score"].DataType = typeof(Int32); DataRow dr = dt.NewRow(); dr["Name"] = "张三"; dr["Score"] = 89; dt.Rows.Add(dr); DataRow dr1 = dt.NewRow(); dr1["Name"] = "李四"; dr1["Score"] = 99; dt.Rows.Add(dr1); DataRow dr2 = dt.NewRow(); dr2["Name"] = "王五"; dr2["Score"] = 82; dt.Rows.Add(dr2); DataRow dr3 = dt.NewRow(); dr3["Name"] = "赵六"; dr3["Score"] = 89; dt.Rows.Add(dr3); //计算分数总计 dt.Columns.Add("Count"); string obj = dt.Compute("SUM(Score)", "").ToString(); dt.Rows[0]["Count"] = obj; //计算分数平均分 dt.Columns.Add("Avg"); obj = dt.Compute("AVG(Score)", "").ToString(); dt.Rows[0]["Avg"] = obj; return dt; } }