坚持139

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

设计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编程之道上抄来的例子:

后台View Code
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;
}
}
}
前台View Code
    <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>

显示结果为:



 

posted on 2011-12-08 16:50  坚持139  阅读(4669)  评论(0编辑  收藏  举报