
test2.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test2.aspx.cs" Inherits="test2" %>
<html>
<head runat="server">
<title>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Label ID="Label98" runat="server" Text=""></asp:Label><br>
<asp:GridView id="GridView1" runat="server" PageSize="10" Width="100%" onrowcreated="GridView1_RowCreated">
</asp:GridView>
<asp:Label ID="Label99" runat="server" Text=""></asp:Label><br>
</form>
</body>
</html>
test2.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class test2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string [] selected_days = {"2013/8/1", "2013/8/2", "2013/8/3", "2013/8/4", "2013/8/5", "2013/8/6", "2013/8/7"};
DataTable dt = new DataTable();
//雖然GridView1_RowCreated已定義建立表頭列的樣式,但此處一定要再做最大行數的Columns.Add,才會出現表頭列-----begin
dt.Columns.Add(new DataColumn("人員", typeof(string)));
dt.Columns.Add(new DataColumn("部門", typeof(string)));
for (int i = 0; i < selected_days.Length; i+=1)
{
dt.Columns.Add(new DataColumn((i*2).ToString(), typeof(string)));
dt.Columns.Add(new DataColumn((i*2+1).ToString(), typeof(string)));
}
//-----------end
//建立左標題行
//此處可從資料庫取值後,以迴圈建立左標題行
dt.Rows.Add("adams");
dt.Rows[0][1] = "45歲";
dt.Rows.Add("miles");
dt.Rows[1][1] = "15歲";
ViewState["dt"] = dt;
this.GridView1.DataSource = ViewState["dt"];
this.GridView1.DataBind();
//建立內容值
//此處可從資料庫取值後,以迴圈建立內容值
for (int i = 0; i < 2; i+=1)
{
for (int j=0; j < selected_days.Length; j+=1)
{
this.GridView1.Rows[i].Cells[j*2+2].Text = "收入" + j.ToString();
this.GridView1.Rows[i].Cells[j*2+3].Text = "支出" + j.ToString();
}
}
}
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
string [] selected_days = {"2013/8/1", "2013/8/2", "2013/8/3", "2013/8/4", "2013/8/5", "2013/8/6", "2013/8/7"};
if (e.Row.RowType == DataControlRowType.Header)
{
int tcc_count = 0;
TableCellCollection tcc = e.Row.Cells;
tcc.Add(new TableHeaderCell());
tcc[0].Attributes.Add("colspan", "1");
tcc[0].Attributes.Add("rowspan", "2");
tcc[0].Attributes.Add("bgcolor", "#00ffff");
tcc[0].Text = "人員</th>";
tcc.Add(new TableHeaderCell());
tcc[1].Attributes.Add("colspan", "1");
tcc[1].Attributes.Add("rowspan", "2");
tcc[1].Attributes.Add("bgcolor", "#00ffff");
tcc[1].Text = "年齡</th>";
for (int i = 0; i < selected_days.Length; i+=1)
{
tcc.Add(new TableHeaderCell());
tcc[i+2].Attributes.Add("colspan", "2");
tcc[i+2].Attributes.Add("rowspan", "1");
tcc[i+2].Attributes.Add("bgcolor", "#ffff00");
if (i == selected_days.Length-1)
{
tcc[i+2].Text = selected_days[i].ToString() + "</th></tr><tr>";
}
else
{
tcc[i+2].Text = selected_days[i].ToString() + "</th>";
}
tcc_count = 2 + i;
}
tcc_count += 1;
for (int i = 0; i < selected_days.Length; i+=1)
{
tcc.Add(new TableHeaderCell());
tcc[tcc_count].Attributes.Add("colspan", "1");
tcc[tcc_count].Attributes.Add("rowspan", "1");
tcc[tcc_count].Attributes.Add("bgcolor", "#ff00ff");
tcc[tcc_count].Text = "收入</th>";
tcc.Add(new TableHeaderCell());
tcc_count += 1;
tcc[tcc_count].Attributes.Add("colspan", "1");
tcc[tcc_count].Attributes.Add("rowspan", "1");
tcc[tcc_count].Attributes.Add("bgcolor", "#ff00ff");
if (i == selected_days.Length-1)
{
tcc[tcc_count].Text = "支出</th></tr><tr>"; //換列要加</tr><tr>
}
else
{
tcc[tcc_count].Text = "支出</th>";
}
tcc_count += 1;
}
}
}
}