在Web上的Grid表格(提供锁定)

原创 2004年07月07日 16:37:00

<html><head><title>DefineGrid</title>
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<style type=text/css>
BODY{font-size:9pt;}
TD{font-size:9pt;}
.Header{border-right:#555 1px solid;padding-right:4px;border-top:#FFF 1px solid;padding-left: 4px;background:#CCC;padding-bottom:4px;overflow:hidden;border-left:#FFF 1px solid;cursor:hand;padding-top:4px;border-bottom:#555 1px solid;white-space:nowrap}
.Cell{border-right:#DDD 1px solid;padding-right:3px;border-top:#FFF 1px solid;padding-left:3px;background:#FFF;padding-bottom:3px;overflow:hidden;boder-left:#FFF 1px solid;padding-top:3px;border-bottom:#DDD 1px solid;white-space:nowrap}
</style>

<script>
//栏位标题(栏位名称#栏位宽度#资料对齐)
var Header=new Array();
for(iIndex=0;iIndex<10;iIndex++)
{
 Header[iIndex]="字段"+iIndex+"#100#left";
}
//栏位资料(二维阵列)
var CellArray=new Array();
for(iIndex=0;iIndex<20;iIndex++)
{
 var Cell=new Array();
 for(kIndex=0;kIndex<10;kIndex++)
 {
  Cell[kIndex]="行:"+iIndex+"字段:"+kIndex+">值";
 }
 CellArray[iIndex]=Cell;
}
</script>
<script>
var GridWidth=480;//资料表显示宽度(不含卷轴)
var ShowLine=10;//资料表显示列数
var CellHeight=21;//资料列高度
var LockColumn=1;//要锁定的栏位数(由左至右)

function WriteTable()
{
 //写入表格
 var iGridWidth=GridWidth;
 var NewHTML="<table border=/"0/" cellpadding=/"0/" cellspacing=/"0/"><tr><td><div style=/"width:100%;overflow-x:scroll/"><table border=/"0/" cellpadding=/"0/" cellspacing=/"0/"><tr>";
 for(iIndex=0;iIndex<Header.length;iIndex++)
 {
  if(iIndex<LockColumn)
  {
   var strHeader=Header[iIndex].split("#");
   iGridWidth-=strHeader[1];
   var LockInfo=((iIndex+1)==LockColumn)?"解除锁定":"锁定此栏位";
   NewHTML+="<td><div class=/"Header/" style=/"width:"+strHeader[1]+"px;height:"+CellHeight+"px/" title=/""+LockInfo+"/" onclick=/"ResetTable("+iIndex+")/">"+strHeader[0]+"</div></td>";
  }
 }
 NewHTML+="</tr><tr><td colspan=/""+LockColumn+"/"><div id=/"DataFrame1/" style=/"position:relative;width:100%;overflow:hidden/"><div id=/"DataGroup1/" style=/"position:relative/"></div></div></td></tr></table></div></td><td valign=/"top/"><div style=/"width:"+iGridWidth+"px;overflow-x:scroll/"><table border=/"0/" cellpadding=/"0/" cellspacing=/"0/"><tr>";
 for(iIndex=0;iIndex<Header.length;iIndex++)
 {
  if(iIndex>=LockColumn)
  {
   var strHeader=Header[iIndex].split("#");
   NewHTML+="<td><div class=/"Header/" style=/"width:"+strHeader[1]+"px;height:"+CellHeight+"px/" title=/"锁定此栏位/" onclick=/"ResetTable("+iIndex+")/">"+strHeader[0]+"</div></td>";
  }
 }
 NewHTML+="</tr><tr><td colspan=/""+(Header.length-LockColumn)+"/"><div id=/"DataFrame2/" style=/"position:relative;width:100%;overflow:hidden/"><div id=/"DataGroup2/" style=/"position:relative/"></div></div></td></tr></table></div></td><td valign=/"top/"><div id=/"DataFrame3/" style=/"position:relative;background:#000;overflow-y:scroll/" onscroll=/"SYNC_Roll()/"><div id=/"DataGroup3/" style=/"position:relative;width:1px;visibility:hidden/"></div></div></td></tr></table>";
 DefineGrid.innerHTML=NewHTML;
 ApplyData();
}

function ApplyData()
{
 //写入资料
 var NewHTML="<table border=/"0/" cellpadding=/"0/" cellspacing=/"0/">";
 for(iIndex=0;iIndex<CellArray.length;iIndex++)
 {
  NewHTML+="<tr>";
  for(kIndex=0;kIndex<Header.length;kIndex++)
  {
   if(kIndex<LockColumn)
   {
    var strHeader=Header[kIndex].split("#");
    NewHTML+="<td><div class=/"Cell/" style=/"width:"+strHeader[1]+"px;height:"+CellHeight+"px;text-align:"+strHeader[2]+"/">"+CellArray[iIndex][kIndex]+"</div></td>";
   }
  }
  NewHTML+="</tr>";
 }
 NewHTML+="</table>";
 DataGroup1.innerHTML=NewHTML;
 var NewHTML="<table border=/"0/" cellpadding=/"0/" cellspacing=/"0/">";
 for(iIndex=0;iIndex<CellArray.length;iIndex++)
 {
  NewHTML+="<tr>";
  for(kIndex=0;kIndex<Header.length;kIndex++)
  {
   if(kIndex>=LockColumn)
   {
    var strHeader=Header[kIndex].split("#");
    NewHTML+="<td><div class=/"Cell/" style=/"width:"+strHeader[1]+"px;height:"+CellHeight+"px;text-align:"+strHeader[2]+"/">"+CellArray[iIndex][kIndex]+"</div></td>";
   }
  }
  NewHTML+="</tr>";
 }
 NewHTML+="</table>";
 DataGroup2.innerHTML=NewHTML;
 DataFrame1.style.pixelHeight=CellHeight*ShowLine;
 DataFrame2.style.pixelHeight=CellHeight*ShowLine;
 DataFrame3.style.pixelHeight=CellHeight*ShowLine+CellHeight;
 DataGroup3.style.pixelHeight=CellHeight*(CellArray.length+1);
}

function ResetTable(n)
{
 var iGridWidth=0;
 for(iIndex=0;iIndex<Header.length;iIndex++)
 {
  if(iIndex<(n+1))
  {
   var strHeader=Header[iIndex].split("#");
   iGridWidth+=parseInt(strHeader[1]);
  }
 }
 if(iGridWidth>GridWidth)
 {
  var Sure=confirm("/n锁定栏位的宽度大於资料表显示的宽/n/n度,这可能会造成版面显示不正常./n/n/n您确定要继续吗?");
 }
 else
 {
  Sure=true;
 }
 if(Sure)
 {
  LockColumn=(LockColumn==n+1)?0:n+1;
  WriteTable();
 }
}

function SYNC_Roll()
{
 DataGroup1.style.posTop=-DataFrame3.scrollTop;
 DataGroup2.style.posTop=-DataFrame3.scrollTop;
}
window.onload=WriteTable;
</script>

</head>
<body>
<center>
<table cellspacing=0 cellpadding=0 border=0>
  <tr>
    <td
    style="border-right:white 2px inset;border-top:white 2px inset;border-left: white 2px inset; border-bottom:white 2px inset;background-color:scrollbar">
      <div id=DefineGrid></div>
    </td>
  </tr>
</table>
</center>

extjs_06_grid(列锁定&列分组)

extjs_06_grid(列锁定&列分组)
  • adam_zs
  • adam_zs
  • 2014年06月25日 22:06
  • 1931

Ext实现表格列头冻结效果,锁定列头

这段时间我们的项目中采用了Coolite来做富客户端,Coolite目前的版本是0.8.1,它所采用的Ext版本是2.2.1,因此下面主要是说明在这个版本下所实现的锁定列和多行表头,需要说明的是Ext...
  • e_wsq
  • e_wsq
  • 2013年09月08日 18:26
  • 2641

Ext Grid 锁定列+多表头的设计与实现(二)

上一次实现了锁定列,我是用的是Ext3.2扩展包里面的lockingGridView插件,实现起来还是很简单的。此外Grid还需要多表头,我从网上下到了几个关于多表头的插件,单独使用没有问题,但是将多...
  • JustCoding_
  • JustCoding_
  • 2013年01月18日 12:49
  • 3022

【解决方案】Ext.grid.CheckboxSelectionModel 实现锁住指定行不被选中

效果图1: 注:如图,要对 sm 为 CheckboxSelectionModel 类型的 grid 实现指定行锁住而不被选中,锁住的条件由该行的某一字段的数据决定,图中根据“状态”决定改行能否被...
  • fifteen718
  • fifteen718
  • 2016年12月30日 19:55
  • 1674

使用ExtJS5 GridPanel实现表格嵌套SubGrid(基于ExtJS MVC模式)

使用ExtJS-5.10 的 GridPanel组件实现表格嵌套,主要依赖于GridPanel自带的RowExpander插件,具体用法以及配置参数请参照API 这里有一个简单的表格嵌套Demo和大家...
  • yanJunit
  • yanJunit
  • 2016年11月23日 16:30
  • 1245

EXT3.4关于Grid锁定指定列固定多选框的实现

1    总体解决方案 1.1  创建CheckboxSelectionModel对象 1,新建空的EOS6.3的工程,新建com.towngas.tcis. gridlock构件包; 2,在c...
  • maoxiao1229
  • maoxiao1229
  • 2014年04月03日 17:38
  • 4418

使用Ext.grid.Panel生成表格

使用Ext.grid.Panel生成表格 Ext.grid.Panel继承了Ext.panel.Panel,因此它的很多地方都类似于Ext.panel.Panel,但定义Ext.grid.Panel...
  • broadview2006
  • broadview2006
  • 2013年02月25日 07:28
  • 2623

Extjs 表格grid 搜索过滤查询

按照名称实时查找过滤表格数据
  • Cookysurongbin
  • Cookysurongbin
  • 2016年03月24日 18:14
  • 2688

ligerUI总结—— grid表格(基础篇)

一、配置column 表格显示了多少个列,列宽,列单元格要显示的内容都是由columns属性配置,下面是column的配置参数: 代码如下:{ display: '序号', //表头列显示的文本,支持...
  • whdmxl991
  • whdmxl991
  • 2015年01月04日 11:08
  • 787

九、UI-Grid 模态框中的表格

原文:110 Grid in a Modal 在弹出的模态框中使用表格。在某些情况下,特别是 bootstrap modal,可能会出现表格渲染宽度过小或有时显示不完全。会误认为是由于 bootst...
  • vesong87
  • vesong87
  • 2017年04月01日 10:08
  • 653
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Web上的Grid表格(提供锁定)
举报原因:
原因补充:

(最多只允许输入30个字)