知识大全 发布一个锁定行列的一种方法

Posted

篇首语:“善与恶皆为上帝的成见。”蛇如是说。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 发布一个锁定行列的一种方法相关的知识,希望对你有一定的参考价值。

  功能介绍

  可以实现锁定表格的行和列的功能 效果和Excel里的冻结窗格类似 当然没有Excel那么强大了 只是类似

  问题

  当一个table太大而导致在屏幕里显示不下的时候 IE会出现滚动条 但是这时候就不好看了 对用户的操作也不是很方便 于是我们就想给他加一个限制 在制定的范围内滚动

  如何实现呢?网上也有不少实现方法了 效果如何就不发表意见了 这里主要是想说一下我的思路

  思路

   其实思路很简单 div有一个 功能 给他的style 加上 CLEAR none OVERFLOW auto WIDTH px HEIGHT px 后 div就会出现滚动条(当然要在div里的内容超出div设置的时候) 这样div里的table 就可滚动了 但是行和列也以一起跟着动了起来

   行和列如何 锁定 呢?这里我用了一个笨招 用三个div来分别放置行和列 以及行列交叉的地方 这样看起来就像是别锁定住了

   当然行和列并不是不动就可以了 也要根据div的滚动条的滚动作出变化(移动)才可以 这里就要使用js来帮忙了

  优点

   侵入性小 只需要在 aspx页面里加几个div 引用一个 js文件就可以了 其他的文件里的代码都不用修改

   适用范围比较广 针对生成的 <table> 标签 而不针对服务器控件 所以DataGrd GridView DataList等都可以使用 只要输出的是 table 形式的代码就可以

   可以同时锁定行和列 行数和列数可以自定义 锁定 效果好 不会出现 跳动 的现象

  缺点

   占用客户端的资源比较大 行数多的时候会有一点点慢

   不支持ff

  js的能力还是不够强 目前只能这样了 但这不是最终的结果 还是要更新升级的 发出来也是想请各路高手指点一二

  说了这么多了 可能大家还是没有看明白 不好意思 表达能力比较差 发代码看看吧 呵呵

   aspx文件里面需要加的代码

  <div onscroll= myScroll(this) id= dMain >

  你的控件控件

  </div>

  <div id= dTop >放置行</div>

  <div id= dLeft >放置列</div>

  <div id= dMid ></div>

  js 文件里的代码

  function myLoad()

  

  if (document getElementById( dMain ))

  divInit()

  

  function myResize()

  

  if (document getElementById( dMain ))

  

  divInit()

  

  

  function divInit()

  

  var dMain = document getElementById( dMain ) //主Div

  var dTop = document getElementById( dTop ) //锁定行的Div

  var dLeft = document getElementById( dLeft ) //锁定列的Div

  var dMid = document getElementById( dMid ) //左上角的Div

  var windowWidth = document body scrollWidth

  var windowHeight = document body clientHeight

  //alert(windowWidth)

  dMain style background= #ffffff

  //alert(windowHeight)

  dMain style width = windowWidth

  //修正

  var sch = document getElementById( div_Search )

  //alert(sch scrollHeight)

  if (sch style display == )

  

  dMain style height = windowHeight sch scrollHeight

  

  else

  

  dMain style height = windowHeight

  

  //dMain style display = none

  //寻找Top 和 Left

  var tt = dMain // 寻找左上角的坐标 代码来自梅花雪的日期控件

  var th = tt

  var ttop = tt offsetTop

  var thei = tt clientHeight

  var tleft = tt offsetLeft

  var ttyp = tt type

  while (tt = tt offsetParent)ttop+=tt offsetTop tleft+=tt offsetLeft

  var myTop = (ttyp== image )? ttop+thei ttop+thei+ //左上角的坐标

  var myLeft = tleft //左上角的坐标

  //===================================寻找完毕===============

  hh = dMain style height //修正

  hh = hh replace( px )

  myTop = myTop hh +

  var dg = document getElementById( DG ) //显示数据的表格

  var RowsCount = //锁定行数

  var LineCount = //锁定列数

  //锁定行的高度

  var RowsHeight = dg rows[RowsCount] cells[ ] offsetTop dg rows[ ] cells[ ] offsetTop +

  //锁定列的宽度

  var LineWidth = dg rows[ ] cells[LineCount] offsetLeft dg rows[ ] cells[ ] offsetLeft +

  //锁定列的高度

  var LineHeight = dMain style height

  LineHeight = LineHeight replace( px )

  //锁定行的宽度

  var RowsWidth = dMain style width

  RowsWidth = RowsWidth replace( px )

  //hh = parseint(hh)

  //赋值

  divResize(dMain dTop dLeft dMid)

  if (RowsHeight < )

  RowsHeight =

  if (LineWidth < )

  LineWidth =

  dTop style width = RowsWidth

  dTop style height = RowsHeight

  dLeft style width = LineWidth

  dLeft style height = LineHeight

  dMid style width = LineWidth

  dMid style height = RowsHeight

  //设置左上角的位置

  dTop style top = myTop

  dTop style left = myLeft

  dLeft style top = myTop

  dLeft style left = myLeft

  dMid style top = myTop

  dMid style left = myLeft

  

  function divResize(dMain dTop dLeft dMid)

  

  dTop innerHTML = dMain innerHTML

  dMid innerHTML = dMain innerHTML

  dLeft innerHTML = dMain innerHTML

  dLeft = dMain

  

  function divResize (dMain dLeft)

  

  dLeft innerHTML = dMain innerHTML

  

  function myScroll(me)

  

  var dTop = document getElementById( dTop )

  var dLeft = document getElementById( dLeft )

  var dMid = document getElementById( dMid ) //左上角的Div

  dTop scrollLeft = me scrollLeft

  dLeft scrollTop = me scrollTop

  //dMid scrollLeft = me scrollLeft

  //dMid scrollTop = me scrollTop

cha138/Article/program/net/201311/12481

相关参考

知识大全 请问主管会计从业资格考试和发布会计从业信息是哪个部门

请问主管会计从业资格考试和发布会计从业信息是哪个部门?会计是以货币为主要计量单位,运用专门的方法,核算和监督一个单位经济活动的一种经济管理工作。会计是以货币为主要的计量单位,以凭证为主要的依据,借助于

锁定老年痴呆易感人群

过去人们认为老年性痴呆是一种不可抗拒的老化现象,但现今研究认为,并非人老就会痴呆。到底哪些人易患老年痴呆呢?一、高龄老人:老年痴呆的发病是随着年龄的增长而呈增高趋势。有资料表明,在60岁以上老年人中老

止付的概念是什么?

止付是指由于本行内以及同业间差错造成客户账户余额有误,未能及时纠正错误等原因而采取的将客户账户全部资金或部分资金暂时锁定的一种交易。经办人员不得应客户的要求办理止付。

知识大全 pessimistic锁定对optimistic锁定(2)

  pessimisticlocking考虑  )使用selectforupdate(nowait)不像optimisticlocking需要用户额外的编码实现简单  )在交互式应用中行锁的时间可能较

知识大全 求N阶行列式的值

求N阶行列式的值  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  改变N的值可以求N阶行列式的值 

知识大全 在oracle中进行列行转换

  固定列数的行列转换如  studentsubjectgrade         student语文  student数学  s

用户暂时离开时,锁定Windows系统以免其他人非法使用。锁定系统的快捷方式为同时按住()

用户暂时离开时,锁定Windows系统以免其他人非法使用。锁定系统的快捷方式为同时按住()。A、WIN键和Z键B、F1键和L键C、WIN键和L键D、F1键和Z键正确答案:C

用户暂时离开时,锁定Windows系统以免其他人非法使用。锁定系统的快捷方式为同时按住()

用户暂时离开时,锁定Windows系统以免其他人非法使用。锁定系统的快捷方式为同时按住()。A、WIN键和Z键B、F1键和L键C、WIN键和L键D、F1键和Z键正确答案:C

知识大全 微信支付被锁定了,锁定的时候是不是输入正确的密码也不可以

微信支付被锁定了,锁定的时候是不是输入正确的密码也不可以?1、一天内输错10次,验密冻结;过了当天24点,则解冻;2、支持密码输入错误时,页面会出现剩余的可输入次数,可选择“忘记密码”的快速入口进行找

知识大全 一个完整的新闻发布系统代码

  环境Tomcat+JSE+PostgreSQL  我将分几个步骤完成对一个新闻发布系统的构建来理解JSP的一些基本使用方法!  首先我将先介绍这个新闻发布系统的基本结构  indexjsp管理员登