這可能是老辦法了。
我簡單做了個測試。
效果:點擊
- HTML code
-
<form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" onrowcreated="GridView1_RowCreated"> </asp:GridView> </div> </form>
- C# code
-
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GridView1.DataSource = GetTable(); GridView1.DataBind(); } } private DataTable GetTable() { DataTable dt = new DataTable(); DataColumn dc = new DataColumn(); dc.ColumnName = "ID"; dc.AutoIncrement = true; dc.AutoIncrementSeed = 1; dc.AutoIncrementStep = 1; dt.Columns.Add(dc); dt.PrimaryKey = new DataColumn[] { dc }; dt.Columns.Add("FirstName", typeof(string)); dt.Columns.Add("LastName", typeof(string)); dt.Columns.Add("City", typeof(string)); dt.Columns.Add("Street", typeof(string)); DataRow dr = dt.NewRow(); dr["FirstName"] = "元甲"; dr["LastName"] = "霍"; dr["City"] = "上海"; dr["Street"] = "南京路325號"; dt.Rows.Add(dr); dr = dt.NewRow(); dr["FirstName"] = "真"; dr["LastName"] = "陳"; dr["City"] = "佛山"; dr["Street"] = "東山路15號"; dt.Rows.Add(dr); return dt; } protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.Header) { // 第一行表頭 TableCellCollection tcHeader = e.Row.Cells; tcHeader.Clear(); tcHeader.Add(new TableHeaderCell()); tcHeader[0].Attributes.Add("rowspan", "3"); //跨三行。 tcHeader[0].Text = "人員ID"; tcHeader.Add(new TableHeaderCell()); tcHeader[1].Attributes.Add("colspan", "4"); //跨四列 tcHeader[1].Text = "基本資料</th></tr><tr>"; // 作弊 // 第二行表頭 tcHeader.Add(new TableHeaderCell()); tcHeader[2].Attributes.Add("colspan", "2"); tcHeader[2].Text = "姓名"; tcHeader.Add(new TableHeaderCell()); tcHeader[3].Attributes.Add("colspan", "2"); tcHeader[3].Text = "聯繫方式</th></tr><tr>"; //作弊 // 第三行表頭 tcHeader.Add(new TableHeaderCell()); tcHeader[4].Text = "名"; tcHeader.Add(new TableHeaderCell()); tcHeader[5].Text = "姓"; tcHeader.Add(new TableHeaderCell()); tcHeader[6].Text = "城市"; tcHeader.Add(new TableHeaderCell()); tcHeader[7].Text = "街道"; } }