gridview如何冻结列?

coffee36 2008-03-31 10:49:20
我现在用GRIDVIEW显示数据时,由于列太多,导致拖到最右边时看不清数据对应的是那条记录,现在想用冻结列的方式固定前几列,在网上查了很多例子,用CSS方式控制,可都没效果,下了个YYCONTROLS设置了冻结列,也不起作用,请各位WEB专家给指点一下如何冻结列?
...全文
3379 35 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
35 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangqihua0 2012-10-11
  • 打赏
  • 举报
回复
怎么冻结全选列,并且点击行变色,显示选中的总数
Debug_mq 2008-05-30
  • 打赏
  • 举报
回复
请问C/S的冻结列怎么做???


落上的兄弟,冻结很好理解啊...怎么都不明白呢
ldw701 2008-04-02
  • 打赏
  • 举报
回复
Mark
coffee36 2008-04-02
  • 打赏
  • 举报
回复
ICollection 这个接口要引用哪个命名空间?
我引用了System.Collections.Generic 说缺少一个参数 <T>
引用了System.Collections报无效的指针错误
coffee36 2008-04-02
  • 打赏
  • 举报
回复
谢谢,孟老大,我这就去试试
coffee36 2008-04-02
  • 打赏
  • 举报
回复
谢谢各位的帮忙,冻结列的效果不太明显,我准备用气泡提示来实现
datahandler2 2008-04-02
  • 打赏
  • 举报
回复
确实听不懂你说的意思。如果列过多。可以设立个功能,由用户自己来挑选要显示的列,其他的就用隐藏的
wolf_410 2008-04-02
  • 打赏
  • 举报
回复
顶啊!
俩定 2008-04-01
  • 打赏
  • 举报
回复
帮顶...
孟子E章 2008-04-01
  • 打赏
  • 举报
回复
晕啊,第一次使用 asp.net就搞这么复杂的。
下面是测试的例子
<%@ Page Language="C#"  EnableViewState="false" %>
<script runat="server">
// 计算数据,完全可以从数据看取得
ICollection CreateDataSourceByXianhuiMeng()
{
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 < 20; 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 (!Page.IsPostBack)
{
GridView1.DataSource = CreateDataSourceByXianhuiMeng();
GridView1.DataBind();
}
}

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{

}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">

<script type="text/javascript">
var tblID = "<%=GridView1.ClientID %>";
function lockCol() {

var table = document.getElementById(tblID);
var cTR = table.getElementsByTagName('TR'); //collection of rows

if (table.rows[0].cells[0].className == '') {
for (i = 0; i < cTR.length; i++)
{
var tr = cTR.item(i);
tr.cells[0].className = 'locked'
}

}
else {
for (i = 0; i < cTR.length; i++)
{
var tr = cTR.item(i);
tr.cells[0].className = ''
}

}
}

function createHeadBody()
{
var t = document.getElementById(tblID);
var h = t.createTHead()
h.appendChild(t.tBodies[0].firstChild)
t.parentNode.id = "tbl-container";
lockCol()
}
window.onload = createHeadBody;
</script>

<style type="text/css">
div#tbl-container
{
width: 418px;
height: 252px;
overflow: auto;
scrollbar-base-color: #ffeaff;
}
table
{
table-layout: fixed;
border-collapse: collapse;
background-color: WhiteSmoke;
}
div#tbl-container table th
{
width: 120px;
}
thead th, thead th.locked
{
font-size: 14px;
font-weight: bold;
text-align: center;
background-color: navy;
color: white;
border-right: 1px solid silver;
position: relative;
cursor: default;
}
thead th
{
top: expression(document.getElementById( "tbl-container" ).scrollTop-2); /* IE5+ only */
z-index: 20;
}
thead th.locked
{
z-index: 30;
}
td.locked, th.locked
{
background-color: #ffeaff;
font-weight: bold;
border-right: 1px solid silver;
left: expression(parentNode.parentNode.parentNode.parentNode.scrollLeft); /* IE5+ only */
position: relative;
z-index: 10;
}
</style>
</head>
<body>
<form id="form1" runat="server">

<asp:GridView ID="GridView1" runat="server" OnRowDataBound="GridView1_RowDataBound">
<HeaderStyle BackColor="#EDEDED" />
<Columns>
<asp:TemplateField HeaderText="模版列">
<ItemTemplate>
<%#Eval("学生姓名") %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

</form>
</body>
</html>
coffee36 2008-04-01
  • 打赏
  • 举报
回复
顶一下,我是第一次使用ASP.NET
mysky0103 2008-04-01
  • 打赏
  • 举报
回复
关注
coffee36 2008-04-01
  • 打赏
  • 举报
回复
即使光IE支持也行。我这是怎么都出不了冻结的效果呀
coffee36 2008-04-01
  • 打赏
  • 举报
回复
to :net_lover

孟老大,给说个解决办法吧。这个问题还真挺难解决的
coffee36 2008-04-01
  • 打赏
  • 举报
回复
那有其他什么好的解决办法吗?
TNT_1st_excellence 2008-03-31
  • 打赏
  • 举报
回复
Infragistic 的Grid控件直接设置属性就可以满足楼主的需求了
coffee36 2008-03-31
  • 打赏
  • 举报
回复
用两个表格实现是什么意思?
octverve 2008-03-31
  • 打赏
  • 举报
回复
http://birdshome.cnblogs.com/archive/2006/05/01/ScrollTable.html
这个是效果

http://birdshome.cnblogs.com/archive/2006/05/13/ScrollTableDetails.html
这个是源~{有些慢,但肯定能打开的}
octverve 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 coffee36 的回复:]
呵呵,楼上的兄弟,我也觉得我的描述不太清楚。
不过你给的网址打不开?
[/Quote]
哪 个打不开??我刚试过的,
coffee36 2008-03-31
  • 打赏
  • 举报
回复
呵呵,楼上的兄弟,我也觉得我的描述不太清楚。
不过你给的网址打不开?
加载更多回复(15)

62,243

社区成员

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

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

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

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