随笔 - 394  文章 - 0  评论 - 946  阅读 - 143万 

1、这里先介绍单纯的GridView多表头合并,先上图:

可以看到,上图就是生成的多表头,具体的后台代码是在Row_Created事件中创建的。先看创建代码:

复制代码
View Code
protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
{
switch (e.Row.RowType)
{
case DataControlRowType.Header:

//总表头
TableCellCollection tcHeader = e.Row.Cells;
tcHeader.Clear();

//第一行表头
tcHeader.Add(new TableHeaderCell());
tcHeader[
0].Attributes.Add("bgcolor", "DarkSeaBlue");
tcHeader[
0].Attributes.Add("colspan", "6"); //合并第一行的6列
tcHeader[0].Text = "用户基本信息</th></tr><tr>";

//第二行表头
tcHeader.Add(new TableHeaderCell());
tcHeader[
1].Attributes.Add("bgcolor", "DarkSeaGreen");
tcHeader[
1].Attributes.Add("colspan", "3");
tcHeader[
1].Text = "基本信息";

tcHeader.Add(
new TableHeaderCell());
tcHeader[
2].Attributes.Add("bgcolor", "DarkSeaGreen");
tcHeader[
2].Attributes.Add("colspan", "3");
tcHeader[
2].Text = "籍贯信息</th></tr><tr>";

//第三行表头
tcHeader.Add(new TableHeaderCell());
tcHeader[
3].Attributes.Add("bgcolor", "Khaki");
tcHeader[
3].Text = "公司";
tcHeader.Add(
new TableHeaderCell());
tcHeader[
4].Attributes.Add("bgcolor", "Khaki");
tcHeader[
4].Text = "姓名";
tcHeader.Add(
new TableHeaderCell());
tcHeader[
5].Attributes.Add("bgcolor", "Khaki");
tcHeader[
5].Text = "职衔";
tcHeader.Add(
new TableHeaderCell());
tcHeader[
6].Attributes.Add("bgcolor", "Khaki");
tcHeader[
6].Text = "住址";
tcHeader.Add(
new TableHeaderCell());
tcHeader[
7].Attributes.Add("bgcolor", "Khaki");
tcHeader[
7].Text = "城市";
tcHeader.Add(
new TableHeaderCell());
tcHeader[
8].Attributes.Add("bgcolor", "Khaki");
tcHeader[
8].Text = "国籍";

break;
}
}
复制代码

需要说明的是,如果想实现多表头,得自己绘制tablecell,具体的方式就是先添加一个新的TableHeaderCell,然后就是设定其Attributes属性,再者如果要进行单元格合并,那么需要指定其colspan或者是rowspan,以便确定是横向合并还是竖向合并。

前台代码如下:

复制代码
View Code
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
CellPadding
="4" DataSourceID="SqlDataSource1"
GridLines
="Vertical" Width="927px" BackColor="White"
BorderColor
="#DEDFDE" BorderStyle="None" BorderWidth="1px"
onrowcreated
="GridView1_RowCreated" ForeColor="Black">
<RowStyle BackColor="#F7F7DE" />
<Columns>
<asp:BoundField DataField="CompanyName" HeaderText="公司" />
<asp:BoundField DataField="ContactName" HeaderText="姓名" />
<asp:BoundField DataField="ContactTitle" HeaderText="职衔" />
<asp:BoundField DataField="Address" HeaderText="住址" />
<asp:BoundField DataField="City" HeaderText="居住地" />
<asp:BoundField DataField="Country" HeaderText="国籍"
SortExpression
="Country" />
</Columns>
<FooterStyle BackColor="#CCCC99" />
<PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
<AlternatingRowStyle BackColor="White" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString
="<%$ ConnectionStrings:NorthwindConnectionString %>"
SelectCommand
="SELECT [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Country] FROM [Customers]">
</asp:SqlDataSource>
复制代码

希望对你有用,谢谢。

posted on   程序诗人  阅读(19378)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示