TerryLee's Tech Space
TerryLee技术专栏
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 457 文章- 2 评论- 11531
在ASP.NET页面中冻结DataGrid的列或头部
写在前面:在Asp.Net页面中,有时候我们需要冻结DataGrid中的某一列,比如显示的数据项过多时,我们需要让第一列不动,拖动横向滚动条时其他列隐藏,这时就需要冻结列了;另外,有时候也需要让DataGrid的头部不动,拖动纵向滚动条时,下面的数据项可以滚动。在实现的过程中,其实就是用了CSS样式来控制,一起看一下。
一.冻结某一列:
1
<%
@ Page language
=
"
c#
"
Codebehind
=
"
WebForm1.aspx.cs
"
AutoEventWireup
=
"
false
"
Inherits
=
"
WebDataGridColumn.WebForm1
"
%>
2
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
>
3
<
HTML
>
4
<
HEAD
>
5
<
title
>
WebForm1
</
title
>
6
<
meta
name
="GENERATOR"
Content
="Microsoft Visual Studio .NET 7.1"
>
7
<
meta
name
="CODE_LANGUAGE"
Content
="C#"
>
8
<
meta
name
="vs_defaultClientScript"
content
="JavaScript"
>
9
<
meta
name
="vs_targetSchema"
content
="http://schemas.microsoft.com/intellisense/ie5"
>
10
<!--
要冻结哪一列,就把fixCol这个CSS加到HeaderStyle-CssClass和ItemStyle-CssClass
-->
11
<
style
type
="text/css"
>
12
.fixCol
{
}
{
; LEFT
:
expression(this.offsetParent.scrollLeft)
;
POSITION
:
relative
}
13
</
style
>
14
</
HEAD
>
15
<
body
>
16
<
form
id
="Form1"
method
="post"
runat
="server"
>
17
<
TABLE
id
="Table1"
cellSpacing
="1"
cellPadding
="1"
width
="80%"
border
="0"
align
="center"
>
18
<
TR
>
19
<
TD
height
="50"
align
="center"
>
20
<
asp:Label
id
="Label1"
runat
="server"
Font-Bold
="True"
ForeColor
="Red"
Font-Size
="X-Large"
>
DataGrid冻结列或头部的例子
</
asp:Label
></
TD
>
21
</
TR
>
22
<
TR
>
23
<
TD
align
="center"
>
24
<
asp:DataGrid
id
="DataGrid1"
runat
="server"
BorderColor
="#CC9966"
BorderStyle
="None"
BorderWidth
="1px"
25
BackColor
="White"
CellPadding
="4"
AutoGenerateColumns
="False"
Width
="805px"
>
26
<
SelectedItemStyle
Font-Bold
="True"
ForeColor
="#663399"
BackColor
="#FFCC66"
></
SelectedItemStyle
>
27
<
ItemStyle
ForeColor
="#330099"
BackColor
="White"
></
ItemStyle
>
28
<
HeaderStyle
Font-Bold
="True"
ForeColor
="#FFFFCC"
BackColor
="#990000"
></
HeaderStyle
>
29
<
FooterStyle
ForeColor
="#330099"
BackColor
="#FFFFCC"
></
FooterStyle
>
30
<
Columns
>
31
<
asp:BoundColumn
DataField
="LastName"
HeaderText
="姓名"
>
32
<!--
下面就是冻结列
-->
33
<
HeaderStyle
CssClass
="fixCol"
></
HeaderStyle
>
34
<
ItemStyle
CssClass
="fixCol"
></
ItemStyle
>
35
</
asp:BoundColumn
>
36
<
asp:BoundColumn
DataField
="Title"
HeaderText
="标题"
></
asp:BoundColumn
>
37
<
asp:BoundColumn
DataField
="BirthDate"
HeaderText
="出生日期"
></
asp:BoundColumn
>
38
<
asp:BoundColumn
DataField
="Address"
HeaderText
="家庭住址"
></
asp:BoundColumn
>
39
</
Columns
>
40
<
PagerStyle
HorizontalAlign
="Center"
ForeColor
="#330099"
BackColor
="#FFFFCC"
></
PagerStyle
>
41
</
asp:DataGrid
></
TD
>
42
</
TR
>
43
</
TABLE
>
44
</
form
>
45
</
body
>
46
</
HTML
>
47
二.冻结头部:
1
<%
@ Page language
=
"
c#
"
Codebehind
=
"
WebForm1.aspx.cs
"
AutoEventWireup
=
"
false
"
Inherits
=
"
WebDataGridColumn.WebForm1
"
%>
2
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
>
3
<
HTML
>
4
<
HEAD
>
5
<
title
>
WebForm1
</
title
>
6
<
meta
name
="GENERATOR"
Content
="Microsoft Visual Studio .NET 7.1"
>
7
<
meta
name
="CODE_LANGUAGE"
Content
="C#"
>
8
<
meta
name
="vs_defaultClientScript"
content
="JavaScript"
>
9
<
meta
name
="vs_targetSchema"
content
="http://schemas.microsoft.com/intellisense/ie5"
>
10
<!--
把fixTitle这个CSS加到DataGrid的HeaderStyle-CssClass和ItemStyle-CssClass
-->
11
<
style
type
="text/css"
>
12
.fixTitle
{
}
{
POSITION
:
relative
;
; TOP
:
expression(this.offsetParent.scrollTop)
}
13
</
style
>
14
</
HEAD
>
15
<
body
>
16
<
form
id
="Form1"
method
="post"
runat
="server"
>
17
<
TABLE
id
="Table1"
cellSpacing
="1"
cellPadding
="1"
width
="80%"
border
="0"
align
="center"
>
18
<
TR
>
19
<
TD
height
="50"
align
="center"
>
20
<
asp:Label
id
="Label1"
runat
="server"
Font-Bold
="True"
ForeColor
="Red"
Font-Size
="X-Large"
>
DataGrid冻结列或头部的例子
</
asp:Label
></
TD
>
21
</
TR
>
22
<
TR
>
23
<
TD
align
="center"
>
24
<
asp:DataGrid
id
="DataGrid1"
runat
="server"
BorderColor
="#CC9966"
BorderStyle
="None"
BorderWidth
="1px"
25
BackColor
="White"
CellPadding
="4"
AutoGenerateColumns
="False"
Width
="805px"
>
26
<
SelectedItemStyle
Font-Bold
="True"
ForeColor
="#663399"
BackColor
="#FFCC66"
></
SelectedItemStyle
>
27
<!--
冻结头部
-->
28
<
ItemStyle
ForeColor
="#330099"
BackColor
="White"
CssClass
="fixTitle"
></
ItemStyle
>
29
<
HeaderStyle
Font-Bold
="True"
ForeColor
="#FFFFCC"
BackColor
="#990000"
CssClass
="fixTitle"
></
HeaderStyle
>
30
31
<
FooterStyle
ForeColor
="#330099"
BackColor
="#FFFFCC"
></
FooterStyle
>
32
<
Columns
>
33
<
asp:BoundColumn
DataField
="LastName"
HeaderText
="姓名"
></
asp:BoundColumn
>
34
<
asp:BoundColumn
DataField
="Title"
HeaderText
="标题"
></
asp:BoundColumn
>
35
<
asp:BoundColumn
DataField
="BirthDate"
HeaderText
="出生日期"
></
asp:BoundColumn
>
36
<
asp:BoundColumn
DataField
="Address"
HeaderText
="家庭住址"
></
asp:BoundColumn
>
37
</
Columns
>
38
<
PagerStyle
HorizontalAlign
="Center"
ForeColor
="#330099"
BackColor
="#FFFFCC"
></
PagerStyle
>
39
</
asp:DataGrid
></
TD
>
40
</
TR
>
41
</
TABLE
>
42
</
form
>
43
</
body
>
44
</
HTML
>
45
好了,实现很简单,大家可以试一下,有时候还是挺有用的^_^
注意:大家在运行的时候把DataGrid中的注释去掉,要不会出错
作者:
TerryLee
出处:
http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2005-10-19 08:38
TerryLee
阅读(2555)
评论(25)
编辑
收藏
发表评论
回复
引用
#1楼
2005-10-19 08:47 |
exhjw [未注册用户]
整张效果图看先
回复
引用
#2楼
2005-10-19 09:56 |
aa [未注册用户]
你的注释是不是写反了
回复
引用
查看
#3楼
[
楼主
]2005-10-19 11:29 |
Terrylee
To:aa
不好意思,代码贴反了:)
回复
引用
#4楼
2005-10-19 21:53 |
atliu [未注册用户]
我试好,头是不动,但是数据也不动了.
回复
引用
#5楼
2005-10-19 21:55 |
不说也罢 [未注册用户]
能不能头部和列一起“冻结”呢 ?
回复
引用
查看
#6楼
[
楼主
]2005-10-19 23:16 |
Terrylee
TO:atliu
我看一下,可能是我贴代码时弄乱了
回复
引用
查看
#7楼
[
楼主
]2005-10-19 23:17 |
Terrylee
TO:不说也罢
可以试一下,我没试
回复
引用
#8楼
2005-10-21 08:20 |
joy [未注册用户]
你太粗心了,也太小气了。
回复
引用
#9楼
2005-12-07 10:55 |
锦瑟 [未注册用户]
datagrid本身又不能拖动的,一般都是在datagrid外面加一个div。但是显然加了div你这个css就没有作用了。
希望作者给出演示页面。
回复
引用
#10楼
2006-03-24 17:58 |
sjz [未注册用户]
不能冻结整个列,列头可以冻结,datagrid的数据冻结不了
郁闷中。。。。。。,谁有更好的方法阿!
回复
引用
#11楼
2006-05-08 14:31 |
javasion [未注册用户]
既然要发布出来,就要写清楚一点儿嘛。
回复
引用
#12楼
2006-07-12 15:18 |
bb168 [未注册用户]
試了一下,,,真的可以..解決了我苦找兩天的難題,,,謝謝.~~~
內容我借用了.~~~
回复
引用
查看
#13楼
[
楼主
]2006-07-12 16:28 |
TerryLee
@bb168
不用客气,随便借用,呵呵:-)
回复
引用
#14楼
2006-10-10 09:37 |
路過 [未注册用户]
這個方法拖動的時候反映特慢﹐怎么辦
回复
引用
#15楼
2007-09-14 14:22 |
tester [未注册用户]
试了下固定表头的效果非常难看
回复
引用
#16楼
2007-09-30 20:58 |
kevin_1234 [未注册用户]
这个必须要
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
而当<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
就无效了
回复
引用
#17楼
2007-11-30 11:44 |
zz74558744 [未注册用户]
--引用--------------------------------------------------
路過: 這個方法拖動的時候反映特慢﹐怎么辦
--------------------------------------------------------
--引用--------------------------------------------------
路過: 這個方法拖動的時候反映特慢﹐怎么辦
--------------------------------------------------------
用了這個效果後,拖動起來一卡一卡的,反映特慢,請問要如何解決?
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2005-10-19 10:43 编辑过
相关文章:
ASP.NET AJAX入门系列
ASP.NET 大文件上传组件[无组件上传](AspnetUpload 2.3 release)[免费版序列号放送中...]
【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引
.NET设计模式系列文章
prototype.js 1.4版开发者手册(强烈推荐)
使用Visual Studio2005入门.Net2.0系列视频教程
相关链接:
最新IT新闻:
消息称MySQL创始人已向Sun提交辞呈
谷歌Chrome浏览器即将更换LOGO颜色?
淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略
微软研究院发布 AutoCollage - 整理并融合照片
2008年9月5日科技博客精选
博客园新闻频道
博客园首页
社区
公告
个人简介
网名:TerryLee
本名:李会军
位置:中国 北京
联系:
MVP配置
MVP配置
个人主页
版权声明
本站采用
创作共用
许可 署名,非商业
绿色通道
1.
一步一步学Silverlight 2系列
2.
.NET设计模式系列文章
3.
ASP.NET AJAX入门系列
4.
Castle开发系列文章
5.
Enterprise Library系列
IT新闻
与我联系
发短消息
搜索
留言簿
给我留言
查看留言
随笔分类
.NET Framework(45)
(rss)
ADO.NET Entity Framework
(rss)
AJAX(15)
(rss)
ASP.NET(64)
(rss)
Castle Project(30)
(rss)
CodeSmith(22)
(rss)
Design Patterns(22)
(rss)
Enterprise Library(55)
(rss)
IronPython(4)
(rss)
IT News(24)
(rss)
LINQ to SQL(3)
(rss)
Managed Extensibility Framework(1)
(rss)
NHibernate(25)
(rss)
Open Source(5)
(rss)
Project Manage(3)
(rss)
Silverlight(58)
(rss)
Smart Code(1)
(rss)
Software Factory(11)
(rss)
SQL Server(19)
(rss)
TDD & Reflector(5)
(rss)
Thinking Technology(13)
(rss)
Unity Application Block(2)
(rss)
Windows Communication Foundation(7)
(rss)
Windows Live(2)
(rss)
Windows Presentation Foundation(1)
(rss)
Windows Workflow Foundation
(rss)
东拉西扯(36)
(rss)
社区活动(5)
(rss)
推荐系列(34)
(rss)
我点我评(1)
(rss)
新技术介绍(20)
(rss)
随笔档案
2008年9月 (1)
2008年8月 (5)
2008年7月 (13)
2008年6月 (10)
2008年3月 (41)
2008年2月 (5)
2008年1月 (13)
2007年12月 (15)
2007年11月 (7)
2007年7月 (3)
2007年4月 (2)
2007年3月 (4)
2007年2月 (2)
2007年1月 (6)
2006年12月 (18)
2006年11月 (32)
2006年10月 (35)
2006年9月 (19)
2006年8月 (16)
2006年7月 (23)
2006年6月 (11)
2006年5月 (13)
2006年4月 (24)
2006年3月 (17)
2006年2月 (13)
2006年1月 (13)
2005年12月 (38)
2005年11月 (20)
2005年10月 (27)
2005年9月 (10)
个人站点
TerryLee @ 51CTO
(rss)
我在51CTO的镜像
TerryLee @ ASP.NET
(rss)
我在ASP.NET网站
TerryLee @ IT168
(rss)
我在IT168的镜像
TerryLee @ 博客堂
(rss)
我在博客堂的一片天地
个人主页
我的网摘
(rss)
个人资料收藏夹
我的好友
Aero
(rss)
anchky
(rss)
Anytao
(rss)
Autumoon
(rss)
DDL
(rss)
Dflying Chen
(rss)
Dudu
(rss)
Fantasy Soft
(rss)
idior
(rss)
JesseQu
(rss)
kid-li
(rss)
luking
(rss)
MichelleHu
(rss)
RogerTong
(rss)
Sunmoonfire
(rss)
Teddy
(rss)
wayfarer
(rss)
阿不
(rss)
博文视点官方博客
(rss)
大人物中的小人物
(rss)
丁学
(rss)
怪怪
(rss)
蜡笔小巢
(rss)
蜡人张
(rss)
老赵
(rss)
李茹
(rss)
卢彦
(rss)
吕震宇
(rss)
难得一蠢
(rss)
鸟食轩
(rss)
努力学习的熊
(rss)