<style type="text/css">
.Freezing
{
position:relative
table-layout:fixed
top:expression(this.offsetParent.scrollTop)
z-index: 10
}
.Freezing th{text-overflow:ellipsisoverflow:hiddenwhite-space: nowrappadding:2px}
</style>
2.Javascript方法
//创建表头
if(document.getElementById("gvTitle") == null)
{
var gdvList = document.getElementById("gvCommon")
var gdvHeader = gdvList.cloneNode(true)
for(i = gdvHeader.rows.length - 1i >0i--)
{
gdvHeader.deleteRow(i)
}
document.getElementById("divTitle").appendChild(gdvHeader)
gdvList.deleteRow(0)
//gdvList.rows[0].style.display = 'none'
}
大致做法是利用JS方法Copy出一个表头 gdvHeader 放在一个“divTitle”的DIV中。
GridView是包含在“divGvData”DIV中的,然后设置divTitle的页面位置和divGvData的一致,也就是覆盖在上面。目前发现效果还行。有一点要注意,gdvHeader.id = "gvTitle"要重新设置一个ID,不然删除的还是GridView的数据行。
3.HTML中的部分代码:
<div id="divTitle" style="position:relativetop:0left:0overflow:hiddenwidth:978pxborder:0px solid red"></div>
<div id="divGvData" runat="server" style="position:relativetop:0pxleft:0pxoverflow:scrollwidth:994pxheight:450px" onscroll="funGrilViewScroll()return false">
<asp:GridView ID="gvCommon" style="position:relativetop:0pxleft:0px" runat="server" CssClass="gvFixd" BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" AutoGenerateColumns="False" GridLines="Vertical" PageSize="5" AllowSorting="True" OnSorting="gvCommon_Sorting" >
<FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
<RowStyle BackColor="#E7E7FF" ForeColor="Black" Font-Size="Small" />
<HeaderStyle HorizontalAlign="Center" BackColor="#000084" BorderColor="White" BorderWidth="1px" BorderStyle="Solid" Font-Bold="True" ForeColor="White"/>
</asp:GridView>
</div>
4.asp.net方法
protected void InitGridviewHeader(GridView _gv1, Table _tb1, Panel _pc1)
{
//Page.EnableViewState = false
//[Espal]Copiando las propiedades del renglon de encabezado
//[English]Coping a header row data and properties
_tb1.Rows.Add(_gv1.HeaderRow)
_tb1.Rows[0].ControlStyle.CopyFrom(_gv1.HeaderStyle)
_tb1.CellPadding = _gv1.CellPadding
_tb1.CellSpacing = _gv1.CellSpacing
_tb1.BorderWidth = _gv1.BorderWidth
//if (!_gv1.Width.IsEmpty)
//_gv1.Width = Unit.Pixel(Convert.ToInt32(_gv1.Width.Value) + Convert.ToInt32(_tb1.Width.Value) + 13)
//[Espa]Copiando las propiedades de cada celda del nuevo encabezado.
//[English]Coping each cells properties to the new header cells properties
int Count = 0
_pc1.Width = Unit.Pixel(100)
for (Count = 0Count <_gv1.HeaderRow.Cells.Count - 1Count++)
{
_tb1.Rows[0].Cells[Count].Width = _gv1.Columns[Count].ItemStyle.Width
_tb1.Rows[0].Cells[Count].BorderWidth = _gv1.Columns[Count].HeaderStyle.BorderWidth
_tb1.Rows[0].Cells[Count].BorderStyle = _gv1.Columns[Count].HeaderStyle.BorderStyle
_pc1.Width = Unit.Pixel(Convert.ToInt32(_tb1.Rows[0].Cells[Count].Width.Value) + Convert.ToInt32(_pc1.Width.Value) + 14)
}
//Panel1.Width = Unit.Pixel(Convert.ToInt32(_tb1.Rows[0].Cells[Count-1].Width.Value) + 12)
}
您好,您这样:protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
GridView1.DataSource = FormatDT()
GridView1.DataBind()
}
}
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", "#8E8E8E")
tcHeader[0].Attributes.Add("rowspan", "0")//跨Row
tcHeader[0].Attributes.Add("colspan", "9")//跨Column
tcHeader[0].Text = "全部信息</tr><tr>"
//第二行表头
tcHeader.Add(new TableHeaderCell())
tcHeader[1].Attributes.Add("bgcolor", "#008A23")
tcHeader[1].Text = "身份z号码"
tcHeader.Add(new TableHeaderCell())
tcHeader[2].Text = "基本信息"
tcHeader[2].Attributes.Add("bgcolor", "#005EBB")
tcHeader[2].Attributes.Add("colspan", "3")
tcHeader.Add(new TableHeaderCell())
tcHeader[3].Text = "福利"
tcHeader[3].Attributes.Add("bgcolor", "#008A23")
tcHeader[3].Attributes.Add("colspan", "2")
tcHeader.Add(new TableHeaderCell())
tcHeader[4].Text = "应发合计"
tcHeader[4].Attributes.Add("bgcolor", "#008A23")
tcHeader.Add(new TableHeaderCell())
tcHeader[5].Text = "联系方式</tr><tr>"
tcHeader[5].Attributes.Add("bgcolor", "#005EBB")
tcHeader[5].Attributes.Add("colspan", "2")
//第三行表头
tcHeader.Add(new TableHeaderCell())
tcHeader[6].Text = "身份z号码"
tcHeader.Add(new TableHeaderCell())
tcHeader[7].Text = "姓名"
tcHeader.Add(new TableHeaderCell())
tcHeader[8].Text = "出生日期"
tcHeader.Add(new TableHeaderCell())
tcHeader[9].Text = "性别"
tcHeader.Add(new TableHeaderCell())
tcHeader[10].Text = "基本工资"
tcHeader.Add(new TableHeaderCell())
tcHeader[11].Text = "奖金"
tcHeader.Add(new TableHeaderCell())
tcHeader[12].Text = "应发合计"
tcHeader.Add(new TableHeaderCell())
tcHeader[13].Text = "家庭住址"
tcHeader.Add(new TableHeaderCell())
tcHeader[14].Text = "邮政编码"
break
//数据行 内容自适应 不换行
case DataControlRowType.DataRow:
TableCellCollection cells1 = e.Row.Cells
for (int i = 0i <cells1.Counti++)
{
cells1[i].Wrap = false//设置此项切记 不要设置前台GridView宽度
}
break
}
}
//创建DataTable
protected DataTable CreateDT()
{
DataTable tblDatas = new DataTable("Datas")
//序号列
//tblDatas.Columns.Add("ID", Type.GetType("System.Int32"))
//tblDatas.Columns[0].AutoIncrement = true
//tblDatas.Columns[0].AutoIncrementSeed = 1
//tblDatas.Columns[0].AutoIncrementStep = 1
//数据列
tblDatas.Columns.Add("身份z号码", Type.GetType("System.String"))
tblDatas.Columns.Add("姓名", Type.GetType("System.String"))
tblDatas.Columns.Add("出生日期", Type.GetType("System.String"))
tblDatas.Columns.Add("性别", Type.GetType("System.String"))
tblDatas.Columns.Add("基本工资", Type.GetType("System.Decimal"))
tblDatas.Columns.Add("奖金", Type.GetType("System.Decimal"))
//统计列开始
tblDatas.Columns.Add("应发合计", Type.GetType("System.String"), "基本工资+奖金")
//统计列结束
tblDatas.Columns.Add("家庭住址", Type.GetType("System.String"))
tblDatas.Columns.Add("邮政编码", Type.GetType("System.String"))
tblDatas.Rows.Add(new object[] { null, "张三", "1982", "0", 3000, 1000, null, "深圳市", "518000" })
tblDatas.Rows.Add(new object[] { null, "李四", "1983", "1", 3500, 1200, null, "深圳市", "518000" })
tblDatas.Rows.Add(new object[] { null, "王五", "1984", "1", 4000, 1300, null, "深圳市", "518000" })
tblDatas.Rows.Add(new object[] { null, "赵六", "1985", "0", 5000, 1400, null, "深圳市", "518000" })
tblDatas.Rows.Add(new object[] { null, "牛七", "1986", "1", 6000, 1500, null, "深圳市", "518000" })
return tblDatas
}
//转换DataTable中的数据 用于逻辑处理相应的数据 显示
protected DataTable FormatDT()
{
DataTable dt1 = CreateDT()
//容错处理 用于不确定 自动产生的列
if (dt1.Columns.Contains("性别"))
{
foreach (DataRow dr in dt1.Rows)
{
dr["性别"] = (dr["性别"].ToString() == "0") ? "女" : "男"
}
}
return dt1
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)