Asp.net 为GridView增加一行表头。标题
比如说这个GridView,ID 船名 航次 提单号 ,就是跨这几列,这这几列上面增加一行标题,比如,“基本信息”。然后,后面几列类别: 预配舱单状态 中心收到时间 预配舱单报文号 海关回执 的标题,比如为 “预配舱单海关回执详细信息”。不能用JS ,就是GridView,不用Table。
[解决办法]
在gridview的RowCreated事件中绘制表头。
http://www.cnblogs.com/scy251147/archive/2011/02/13/1953170.html
[解决办法]
最好不要破坏GridView的原始的内容。例如GridView会自动为标题列产生“排序”等等各种控制机制,如果你过早地自己写这一行,破坏GridView原本应该产生的内容,得不偿失!
你可以尽量晚地“添加”标题行,也就是在Render过程已经开始之后,在RenderControls开始之前,才处理标题行。
例如,可以用自己的GridView替代原来的GridView,例如
using System.Drawing;
using System.Web.UI.WebControls;
namespace MyControls
{
public class GridView : System.Web.UI.WebControls.GridView
{
protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
{
var table = (Table)this.Controls[0];
var row = new TableRow();
table.Rows.AddAt(0, row);
var cell = new TableHeaderCell { Text = "组标题1", ColumnSpan = 2, BackColor = Color.AliceBlue };
row.Cells.Add(cell);
cell = new TableHeaderCell { Text = "组标题2", ColumnSpan = 2, CssClass = "titleStyle2" };
row.Cells.Add(cell);
cell = new TableHeaderCell { Text = "标题3" };
row.Cells.Add(cell);
base.RenderContents(writer);
}
}
}
<%@ Register TagPrefix="mc" Namespace="MyControls" %>
<ASP:GridView ....改为
<mc:GridView ....即可。
tcHeader.Add(new TableHeaderCell());
tcHeader[1].Attributes.Add("bgcolor", "Azure");
tcHeader[1].Text = "其他</th></tr><tr>";
//第1行表头
tcHeader.Add(new TableHeaderCell());
tcHeader[0].Attributes.Add("bgcolor", "Azure");
tcHeader[0].Text = "ID";
tcHeader.Add(new TableHeaderCell());
tcHeader[1].Attributes.Add("bgcolor", "Azure");
tcHeader[1].Text = "船名";
tcHeader.Add(new TableHeaderCell());
tcHeader[2].Attributes.Add("bgcolor", "Azure");
tcHeader[2].Text = "航次";
tcHeader.Add(new TableHeaderCell());
tcHeader[3].Attributes.Add("bgcolor", "Azure");
tcHeader[3].Text = "提单号";
tcHeader.Add(new TableHeaderCell());
break;
}
}