Asp.net的DataGrid实现列冻结(C#)
Asp.net的DataGrid实现列冻结(C#)
一、写在前面
列冻结即在拖动横向滚动条时,冻结的列会随着滚动条移动,使得该列不会因为拖动滚动条而被隐藏,呈现出仿佛冻结的效果。列冻结与表头冻结是很常见的需求,但是在DataGrid中列冻结并不简单,在网络中寻找一圈后,发展网络给出的方法不是因为太老旧已经无法使用,就是在推荐使用DataGridView控件,所以我想出了一个简单粗暴的方法,用另一张表覆盖原有的表来实现冻结,这也与许多老方法的思路是一致的。
二、DataGrid的列冻结
2.1 思路
使用CSS样式中的position定位属性来使B表覆盖A表,B表不受滚动轴的影响,A表随着滚动轴滚动,从而呈现出B表的列表被冻结的效果。
有了思路可以来写代码了:
<body>
<div id="div1" style="width: 50%; background-color: aliceblue; height: 500px; margin: 0 auto">
<div id="div2" style="position: relative">
<div id="div3" style="overflow-x: scroll; background-color: azure;">
<div id="div4" style="width: 1200px; background-color: burlywood; height: 300px;">
假装我是一个表格,假装我是一个表格,假装我是一个表格,假装我是一个表格,假装我是一个表格,假装我是一个表格,假装我是一个表格,假装我是一个表格
</div>
</div>
<div id="div5" style="position: absolute; height:300px; width:50px; background-color:antiquewhite; top:0px;"></div>
</div>
</div>
</body>
代码清单 2-1

页面效果 2-1
这里使用了五个div,div5在div2基础上使用绝对定位,实现了对div3的覆盖,之后我们会将div4改为原表格,div5改为覆盖表格。实现效果如“页面效果 2-1”所示,粉色的div5覆盖了褐色的div4,在拖动滚动条时,粉色块不动,褐色块在动,实现了类似列冻结效果。
2.2 实现过程
现在可以将DataGrid添加到div4和div5上了:
<div id="div3" style="overflow-x: scroll; background-color: azure;">
<%--<div id="div4" style="width: 1200px; background-color: burlywood; height: 300px;">
</div>--%>
<asp:DataGrid ID="dg_test" runat="server"
AutoGenerateColumns="false" Width="600px">
<Columns>
<asp:BoundColumn HeaderText="Id" DataField="Id"></asp:BoundColumn>
<asp:BoundColumn HeaderText="姓名" DataField="Name"></asp:BoundColumn>
<asp:BoundColumn HeaderText="年龄" DataField="Age"></asp:BoundColumn>
<asp:BoundColumn HeaderText="就读学校" DataField="School"></asp:BoundColumn>
<asp:BoundColumn HeaderText="技能" DataField="Skill"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="说明">
<ItemTemplate>
<asp:Label ID="lbl_tip" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "Tip") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn HeaderText="爱好" DataField="Hobit"></asp:BoundColumn>
<asp:BoundColumn HeaderText="地址" DataField="Adress"></asp:BoundColumn>
<asp:BoundColumn HeaderText="爱好" DataField="Hobit"></asp:BoundColumn>
<asp:BoundColumn HeaderText="地址" DataField="Adress"></asp:BoundColumn>
<asp:BoundColumn HeaderText="爱好" DataField="Hobit"></asp:BoundColumn>
<asp:BoundColumn HeaderText="地址" DataField="Adress"></asp:BoundColumn>
<asp:BoundColumn HeaderText="爱好" DataField="Hobit"></asp:BoundColumn>
<asp:BoundColumn HeaderText="地址" DataField="Adress"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
</div>
<div id="div5" style="position: absolute; background-color: antiquewhite; top: 0;">
<asp:DataGrid ID="dg_test_cover" runat="server"
AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn HeaderText="Id" DataField="Id"></asp:BoundColumn>
<asp:BoundColumn HeaderText="姓名" DataField="Name"></asp:BoundColumn>
</Columns>
</asp:DataGrid>
</div>
代码清单 2-2

页面效果 2-2
Asp.net的DataGrid实现列冻结(C#)的更多相关文章
- WPF 中获取DataGrid 模板列中控件的对像
WPF 中获取DataGrid 模板列中控件的对像 #region 当前选定行的TextBox获得焦点 /// <summary> /// 当前选定行的TextBox获得焦点 /// &l ...
- easyui datagrid的列编辑
[第十五篇]easyui datagrid的列编辑,同时插入两张表的数据进去 看图说话. 需求:插入两张表,上面的表单是第一张表的内容,下面的两个表格是第二张详情表的内容,跟第一张表的id关联 第 ...
- WPF DataGrid 操作列 类似 LinkButton
WPF中没有类似LinkButton,所以只有运用Button及样式来实现LinkButton. DataGrid 操作列 实现 多个类似LinkButton按钮: 具体实现代码如下: <Dat ...
- WPF 用 DataTemplate 合并DataGrid列表列头<类似报表设计>及行头列头样式 - 学习
WPF中 DataGrid 列头合并,类似于报表设计.效果图如下↓ 1.新建一个WPF项目WpfApplication1,新建一个窗体DataGridTest,前台代码如下: <Window x ...
- WPF DataGrid某列使用多绑定后该列排序失效,列上加入 SortMemberPath 设置即可.
WPF DataGrid某列使用多绑定后该列排序失效 2011-07-14 10:59hdongq | 浏览 1031 次 悬赏:20 在wpf的datagrid中某一列使用了多绑定,但是该列排序失 ...
- ASP.NET repeater添加序号列的方法
ASP.NET repeater添加序号列的方法 1.<itemtemplate> <tr><td> <%# Container.ItemIndex + 1% ...
- ASP.NET中重复表格列合并的实现方法(转自脚本之家)
这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下.NET控件GridView 和 Repeater 关于重复数据合并的方法. 这是合并之前的效果: 合并之后的效果图 ...
- DataGrid的列上添加日期控件
今天的使用EasyUI datagrid的时候,遇到了如下问题,如下图:
- WPF DATAGrid 空白列 后台绑定列 处理
原文:WPF DATAGrid 空白列 后台绑定列 处理 AutoGenerateColumns <DataGrid x:Name="dataGrid" Margin=&qu ...
随机推荐
- [LeetCode] Shifting Letters 漂移字母
We have a string S of lowercase letters, and an integer array shifts. Call the shift of a letter, th ...
- Android进阶推荐书籍
中级进阶推荐看一下以下这几本书 1.<Android从入门到精通(附光盘)> 明日科技 编 2.<第一行代码2 Android(第二版)> 郭霖 著 3.<Android ...
- 10. vue axios 请求未完成时路由跳转报错问题
axios 请求未完成时路由跳转报错问题 前两天项目基本功能算是完成了,在公司测试时遇到了遇到了一个问题,那就是在请求未完成时进行路由跳转时会报错,想了几种办法来解决,例如加loading,请求拦截, ...
- CSS Sprite雪碧图
为了减少http请求数量,加速网页内容显示,很多网站的导航栏图标.登录框图片等,使用的并不是<image>标签,而是CSS Sprite雪碧图. 两个小例子: 淘宝首页的侧栏图 代码 &l ...
- truffle unbox react 出坑指南
最近几天差点就被这鬼东西给逼疯了,truffle init .truffle unbox webpack 不管我怎么运行都是对的,唯独truffle unbox react 不管在哪个windows都 ...
- 数据调试~~TCP转串口、串口转TCP调试
Android socket开发了一个socket客户端,当输入服务器ip以及端口,建立连接之后,Android可以发送数据到电脑接收服务器端. 如果电脑端没有socket服务器怎么办?方法如下: 1 ...
- [转] Quality Of Service In OpenStack
http://tropicaldevel.wordpress.com/2013/07/15/quality-of-service-in-openstack/ In this post I will b ...
- Shadow Copying导致ASP.NET应用启动很慢的解决办法
What's Shadow Copying? 我们安装一个应用程序并启动后,我们是无法更新应用程序安装目录中程序集文件的.如果强制替换会提示文件正在使用,如下图所示. 那你可能会问,为什么会无法更新呢 ...
- [Swift]LeetCode229. 求众数 II | Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Note: The a ...
- [Swift]LeetCode249.群组偏移字符串 $ Group Shifted Strings
Given a string, we can "shift" each of its letter to its successive letter, for example: & ...