懂javascrip的朋友帮帮忙.固定表头问题.GridView

boat2002w 2006-10-26 04:39:51
以下为我找的一段代码,可以实现GridView固定表头,而表的内容添加垂直的滚动条,
但是在我的应用里面,由于字段很多,表头的列宽和下面内容的列宽并不匹配,
请教以下如何修改代码以满足我的使用要求.谢谢

<%@ 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>

...全文
211 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
foshan 2007-03-27
  • 打赏
  • 举报
回复
怎么我提取了以下代码放在*.aspx页面中,再在 *.aspx.cs 页面中 protected void Page_Load( object sender, EventArgs e ) 中加上 GridView1.Attributes.Add("style", "table-layout:fixed"); ,结果表头就消失了,怎么回事???


<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>
bb_bang 2006-10-26
  • 打赏
  • 举报
回复
mark
michaelgrandy 2006-10-26
  • 打赏
  • 举报
回复
搞定了,楼主可以结帖了,谢谢net_lover(【孟子E章】)大哥
我对你的景仰犹如滔滔江水,连绵不绝
孟子E章 2006-10-26
  • 打赏
  • 举报
回复
没有出现你说的情况。

GridView1.Attributes.Add("style", "table-layout:fixed");这行是关键
孟子E章 2006-10-26
  • 打赏
  • 举报
回复
我看看
boat2002w 2006-10-26
  • 打赏
  • 举报
回复
net_lover(【孟子E章】) 老大,我就是看的你的代码啊,但是在列名长,而实际内容短的时候就会产生串列的现象,麻烦指点一下啦.


michaelgrandy 2006-10-26
  • 打赏
  • 举报
回复
只在GridView 中修改了一下宽度,可是我也试过了
主要是表头和内容长度一样,但是每个字段的宽度不一样,所以就还是会不匹配的
michaelgrandy 2006-10-26
  • 打赏
  • 举报
回复
我也遇上了同样的问题,这是有缘啊
孟子E章 2006-10-26
  • 打赏
  • 举报
回复
<%@ 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)));

dt.Columns.Add(new System.Data.DataColumn("学生班级1", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("学生姓名1", typeof(System.String)));
dt.Columns.Add(new System.Data.DataColumn("语文1", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("数学1", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("英语1", typeof(System.Decimal)));
dt.Columns.Add(new System.Data.DataColumn("计算机1", 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);

dr[6] = "班级" + i.ToString();
dr[7] = "【孟子E章】" + i.ToString();
dr[8] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[9] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[10] = System.Math.Round(rd.NextDouble() * 100, 2);
dr[11] = 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="1028">
<HeaderStyle BackColor="#EDEDED" Height="26px" />
</asp:GridView>
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
发帖
.NET社区

6.1w+

社区成员

.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
帖子事件
创建了帖子
2006-10-26 04:39
社区公告

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

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