设计GridView多级复杂表头,在实现过程中有几个问题:
1、如何控制表头中字体颜色、背景色的控制
2、C#中也有VB中IIF的写法:
newRow["1Rev"] = String.IsNullOrEmpty(strRev[1]) ? "" : String.Format("{0:#,##0}", Convert.ToDouble(strRev[1]));
3、可以给字符串付空值:string myString = null;
4、判断SQL查询字段是否为null,可以使用:myrow[0] == System.DBNull.Value 为true?
5、Convert.ToString(myrow[0]),如果myrow[0]为空,返回""。
6、从ASP.NET编程之道上抄来的例子:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;public partial class GridviewMultiHeader : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { } 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("rowspan", "3"); //跨3行 tcHeader[0].Attributes.Add("bgcolor", "white"); tcHeader[0].Text = "盘点期间"; tcHeader.Add(new TableHeaderCell()); tcHeader[1].Attributes.Add("colspan", "6"); //跨6列 tcHeader[1].Text = "全部信息</th></tr><tr>"; //添加二级表头 tcHeader.Add(new TableHeaderCell()); tcHeader[2].Attributes.Add("bgcolor", "DarkSeaGreen"); tcHeader[2].Text = "仓库信息"; tcHeader.Add(new TableHeaderCell()); tcHeader[3].Attributes.Add("bgcolor", "LightSteelBlue"); tcHeader[3].Attributes.Add("colspan", "3");//跨3列 tcHeader[3].Text = "商品信息"; tcHeader.Add(new TableHeaderCell()); tcHeader[4].Attributes.Add("bgcolor", "LightSteelBlue"); tcHeader[4].Attributes.Add("colspan", "2");//跨2列 tcHeader[4].Text = "盘点信息</th></tr><tr>"; //添加三级表头 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 = "数量"; tcHeader.Add(new TableHeaderCell()); tcHeader[9].Attributes.Add("bgcolor", "Khaki"); tcHeader[9].Text = "盘点数"; tcHeader.Add(new TableHeaderCell()); tcHeader[10].Attributes.Add("bgcolor", "Khaki"); tcHeader[10].Text = "盘点说明"; break; } }}

<form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1" EmptyDataText="没有可显示的数据记录。" onrowcreated="GridView1_RowCreated"> <Columns> <asp:BoundField DataField="CheckPeriod" HeaderText="盘点期间" SortExpression="CheckPeriod" /> <asp:BoundField DataField="WareHouseName" HeaderText="仓库名称" SortExpression="WareHouseName" /> <asp:BoundField DataField="ProductName" HeaderText="商品名称" SortExpression="ProductName" /> <asp:BoundField DataField="Specs" HeaderText="规格" SortExpression="Specs" /> <asp:BoundField DataField="Quantity" HeaderText="数量" SortExpression="Quantity" /> <asp:BoundField DataField="CheckQty" HeaderText="盘点数" SortExpression="CheckQty" /> <asp:BoundField DataField="Memo" HeaderText="盘点说明" SortExpression="Memo" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ExpatiateAspNetConnectionString %>" ProviderName="<%$ ConnectionStrings:ExpatiateAspNetConnectionString.ProviderName %>" SelectCommand="SELECT [CheckPeriod], [WareHouseName], [ProductName], [Specs], [Quantity], [CheckQty], [Memo], [Warehouse] FROM [V_StoreCheckReport]"> </asp:SqlDataSource> </div> </form>
显示结果为:
来源:https://www.cnblogs.com/zhoukaiwei/archive/2011/12/08/2280985.html