高分求解GridView固定表头

iloveaspnet2008 2009-03-24 11:39:58
我创建了一个GridView并为GridVeiw添加了div,使GridView有滚动条的效果,
但是怎样才可以让Gridview固定表头呢,
注意:竖直方向上固定表头,在水平方向上不需要固定,
即:拉动水平滚动条的时候,表头随滚动条一起移动,拉动竖直滚动条时,表头固定不动!!!!!
...全文
4291 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangtc20101110 2010-11-21
  • 打赏
  • 举报
回复
很好。不错
fz272103148 2010-06-07
  • 打赏
  • 举报
回复
//总价
decimal SpecialTotalPrice = 0;
//网站价
decimal SitePrice = 0;
//市场价
decimal MarkPrice = 0;
//会员价
decimal MemPrice = 0;
//特价
decimal SpecialPrice = 0;
//节省价格
decimal SavePrice = 0;
//小计价格
decimal StatPrice = 0;
//市场总价
decimal MarkTotalPrice = 0;
//网站总价
decimal SiteTotalPrice = 0;
//会员总价
decimal MemTotalPrice = 0;

decimal strike = 0;
///最低单价
decimal IntComparePri =0;
fz272103148 2010-06-07
  • 打赏
  • 举报
回复

//总价
decimal SpecialTotalPrice = 0;
//网站价
decimal SitePrice = 0;
//市场价
decimal MarkPrice = 0;
//会员价
decimal MemPrice = 0;
//特价
decimal SpecialPrice = 0;
//节省价格
decimal SavePrice = 0;
//小计价格
decimal StatPrice = 0;
//市场总价
decimal MarkTotalPrice = 0;
//网站总价
decimal SiteTotalPrice = 0;
//会员总价
decimal MemTotalPrice = 0;

decimal strike = 0;
///最低单价
decimal IntComparePri =0;

fenghuo12 2010-05-11
  • 打赏
  • 举报
回复
好东西,支持,学习一下
rgmxass 2010-03-10
  • 打赏
  • 举报
回复
各位大侠有没有做过多表头固定的?
feiyuan0204 2010-01-31
  • 打赏
  • 举报
回复
孟老大的方法的确可行!但是你扩展以后取gridview里面的值你还能取到吗?而且每次都初始化加载,删掉数据行,好像??
ygc03288 2009-11-23
  • 打赏
  • 举报
回复
学习
hautrun 2009-03-26
  • 打赏
  • 举报
回复
http://blog.csdn.net/donghaima/archive/2008/08/08/2787893.aspx
看看方法二
zuoming120 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 takako_mu 的回复:]
2楼说的太复杂了,其实只要CSS控管就OK了,我一直用的这个。
链接:Girdview 72般绝技之十四--GridView固定表头(不用javascript只用CSS!,很好用)
[/Quote]
同上
Jcomet 2009-03-24
  • 打赏
  • 举报
回复
<style>
.Freezing
{

//QQ:272912705 光之翼 www.hi.baidu.com/jcomet

position:relative ;
table-layout:fixed;
top:expression(this.offsetParent.scrollTop);
z-index: 10;
}

.Freezing th{text-overflow:ellipsis;overflow:hidden;white-space: nowrap;padding:2px;}
</style>
用法:CSS设如上的样式,HeaderStyle加CssClass="Freezing,套住GridView的Div设置高度宽度 <div style="overflow-y: scroll; height: 200px;width:200px" >
takako_mu 2009-03-24
  • 打赏
  • 举报
回复
2楼说的太复杂了,其实只要CSS控管就OK了,我一直用的这个。
链接:Girdview 72般绝技之十四--GridView固定表头(不用javascript只用CSS!,很好用)
zzxap 2009-03-24
  • 打赏
  • 举报
回复
http://www.cnblogs.com/zt04985807/archive/2009/01/12/1374022.html
zzxap 2009-03-24
  • 打赏
  • 举报
回复
<div id="out" >
<div id="表頭">
這里用一個table把表頭設計好
</div>

<div id="gridview" style=" overflow-x:auto">
這里放一個gridview ,不顯示表頭
<asp:GridView ShowHeader="false" ID="GridView1" runat="server" />

</div>

<div>
ws_hgo 2009-03-24
  • 打赏
  • 举报
回复
建议LZ
去看下

孟老大的BLog
http://blog.csdn.net/net_lover/archive/2006/09/27/1291818.aspx
ws_hgo 2009-03-24
  • 打赏
  • 举报
回复
<%...@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">...
  ICollection CreateDataSource()
...{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
for (int i = 0; i < 8; i++)
...{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = "学生" + i.ToString();
dr[1] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);
return dv;
}

protected void Page_Load(object sender, EventArgs e)
...{
if (!IsPostBack)
...{

GridView1.BorderColor = System.Drawing.Color.DarkOrange;
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();
}
}

protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
...{
if (e.Row.RowType == DataControlRowType.Header)
...{
GridViewRow rowHeader = new GridViewRow(0, 0, DataControlRowType.Header, DataControlRowState.Normal);
rowHeader.BackColor = System.Drawing.Color.White;
rowHeader.Font.Bold = true;

TableCellCollection cells = e.Row.Cells;
TableCell headerCell = new TableCell();
headerCell.Text = "";
rowHeader.Cells.Add(headerCell);

headerCell = new TableCell();
headerCell.Text = "学生成绩";
headerCell.ColumnSpan = cells.Count - 1;
headerCell.HorizontalAlign = HorizontalAlign.Center;

rowHeader.Cells.Add(headerCell);
rowHeader.Visible = true;
GridView1.Controls[0].Controls.AddAt(0, rowHeader);
}
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
...{
e.Row.Attributes.Add("style", "background:#FFF");
}

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>合并 GridView 的表头单元格</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:GridView ID="GridView1" runat="server" CellSpacing="1" CellPadding="3"
Font-Size="12px" Width="300px" BackColor="orange" BorderWidth="0"
OnRowDataBound="GridView1_RowDataBound" OnRowCreated="GridView1_RowCreated">
</asp:GridView>
</form>
</body>
</html>
ws_hgo 2009-03-24
  • 打赏
  • 举报
回复
C#

<%@ Page Language="C#" AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
// 计算数据,完全可以从数据看取得
ICollection CreateDataSource( )
{
System.Data.DataTable dt = new System.Data.DataTable();
System.Data.DataRow dr;
dt.Columns.Add(new System.Data.DataColumn("学生班级", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("计算机", typeof(System.Decimal)));

for (int i = 0; i < 50; i++)
{
System.Random rd = new System.Random(Environment.TickCount * i); ;
dr = dt.NewRow();
dr[0] = "班级" + i.ToString();
dr[1] = "【孟子E章】" + i.ToString();
dr[2] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[3] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[4] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[5] = System.Math.Round(rd.NextDouble() * 100, 2);
dt.Rows.Add(dr);
}
System.Data.DataView dv = new System.Data.DataView(dt);
return dv;
}

protected void Page_Load( object sender, EventArgs e )
{
if (!IsPostBack)
{
GridView1.Attributes.Add("style", "table-layout:fixed");
GridView1.DataSource = CreateDataSource();
GridView1.DataBind();
}
}

</script>

<script type="text/javascript">
function s()
{
var t = document.getElementById("<%=GridView1.ClientID%>");
var t2 = t.cloneNode(true)
for(i = t2.rows.length -1;i > 0;i--)
t2.deleteRow(i)
t.deleteRow(0)
a.appendChild(t2)
}
window.onload = s
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>创建表头固定,表体可滚动的GridView</title>
</head>
<body>
<form id="Form1" runat="server">
<table>
<tr>
<td>
<div id="a">
</div>
<div style="overflow-y: scroll; height: 200px">
<asp:GridView ID="GridView1" runat="server" Font-Size="12px" BackColor="#FFFFFF"
GridLines="Both" CellPadding="4" Width="560">
<HeaderStyle BackColor="#EDEDED" Height="26px" />
</asp:GridView>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
金大哈 2009-03-24
  • 打赏
  • 举报
回复
那么有水平滚动条的时候 表头怎么弄


你大家的方法目前只能垂直滚动
jasondct 2009-03-24
  • 打赏
  • 举报
回复
GridView固定表头(不用javascript只用CSS!,很好用):
<style>
.Freezing
{

position:relative ;
table-layout:fixed;
top:expression(this.offsetParent.scrollTop);
z-index: 10;
}

.Freezing th{text-overflow:ellipsis;overflow:hidden;white-space: nowrap;padding:2px;}
</style>

<asp:GridView ID="GridView1" runat="server" >
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" CssClass="Freezing"/>
</asp:GridView>
wuyq11 2009-03-24
  • 打赏
  • 举报
回复
通过div固定,可参考我博客。

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧