GridView实现多表头合并,解决表头数据对不齐

来源:互联网 发布:3g模型 淘宝 编辑:程序博客网 时间:2024/04/30 14:57

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

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

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,以便确定是横向合并还是竖向合并。

前台代码如下:

<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>


希望对你有用,谢谢




0 0
原创粉丝点击