锁定行头和列头的表格组件_htc

1、在页面中引入风格单定义
<style>
.LockHeadTable {behavior:url(/oblog312/LockHeadTable.htc)}
</style>

2、在需要锁定行列头的表格定义中添加语句“class="LockHeadTable"”就OK了,其他参数有
ROWHEADNUM="锁定行数"
COLHEADNUM="锁定列数"
ROWHEADSTYLE="行表头风格"
COLHEADSTYLE="列表头风格"
ROWSTYLE="行风格1|行风格2|……|行风格n"
FOCUSSTYLE="获得鼠标焦点时的风格"

3、点击行标题时可以对数据进行排序

注意:
  使用本组件时,行表头中的单元格不允许跨行

例:
<table class="LockHeadTable" ROWHEADNUM=3 COLHEADNUM=1 ROWHEADSTYLE="background:#F7F7F7; color:black;" COLHEADSTYLE="background:#F7F7F7; color:black;" ROWSTYLE="background:#FFFFFF; color:black;|background:#F7F7F7; color:black;"  FOCUSSTYLE="background:green; color:white;" width="1500" border="1" cellpadding="3" cellspacing="0" align="center">

源代码:

LockHeadTable.htc(组件程序)

<PUBLIC:COMPONENT>

 <PUBLIC:PROPERTY NAME="ROWHEADNUM" />
 <PUBLIC:PROPERTY NAME="COLHEADNUM" />
 <PUBLIC:PROPERTY NAME="ROWHEADSTYLE" />
 <PUBLIC:PROPERTY NAME="COLHEADSTYLE" />
 <PUBLIC:PROPERTY NAME="ROWSTYLE" />
 <PUBLIC:PROPERTY NAME="FOCUSSTYLE" />

 <script>
 //初始化
 ROWHEADNUM = (ROWHEADNUM==null?0:parseInt(ROWHEADNUM, 10));
 COLHEADNUM = (COLHEADNUM==null?0:parseInt(COLHEADNUM, 10));
 ROWHEADSTYLE = (ROWHEADSTYLE==null?"":ROWHEADSTYLE);
 COLHEADSTYLE = (COLHEADSTYLE==null?"":COLHEADSTYLE);

 arrRowStyle = (ROWSTYLE==null?new Array(""):ROWSTYLE.split("|")); 

 //设置行表头
 var i, j, rowItem, cellItem;
 rowHead = element.cloneNode(true);
 for (i=0; i<ROWHEADNUM; i++) {
  rowItem = element.rows(i);
  rowItem.style.cssText = 'z-index:10; position:relative; top:expression(this.offsetParent.scrollTop);' + ROWHEADSTYLE;
 }

 //设置列表头
 for (i=0; i<element.rows.length; i++) {
  rowItem = element.rows(i);
  if (i>=ROWHEADNUM) {
   rowItem.style.cssText = "position:relative;" + arrRowStyle[(i - ROWHEADNUM) % arrRowStyle.length];
   if (FOCUSSTYLE!=null) {
    rowItem.onmouseover = function () { this.style.cssText = "position:relative;" + FOCUSSTYLE;}
    rowItem.onmouseout = function () { this.style.cssText = "position:relative;" + arrRowStyle[(this.rowIndex - ROWHEADNUM) % arrRowStyle.length];}
   }
  }

  for (j=0; j<COLHEADNUM; j+=cellItem.colSpan) {
   cellItem = rowItem.cells(j);
   cellItem.style.cssText = 'position:relative; left:expression(this.parentElement.offsetParent.scrollLeft);'
    + (i<ROWHEADNUM?'':COLHEADSTYLE);
  }
 }

 //设置行标题排序
 for (i=0; i<ROWHEADNUM; i++) {
  rowItem = element.rows(i);
  for (j=0; j<rowItem.cells.length; j++) {
   cellItem = rowItem.cells(j);
   if (cellItem.rowSpan==ROWHEADNUM-i) {
    cellItem.style.cursor = "hand";
    cellItem.sortAsc = true;
    cellItem.onclick = sortTable;
   }
  }
 }

 //排序
 function sortTable() {
  var objCol = event.srcElement;
  if (objCol.tagName == "TD") {
   var intCol = objCol.cellIndex;
   objCol.sortAsc = !objCol.sortAsc;

   sort_type = 'Num';
   if (isNaN(parseInt(element.rows(ROWHEADNUM).cells(intCol).innerText, 10)))
    sort_type = 'Asc';

   var i,j,boltmp;
   for (i = ROWHEADNUM; i < element.rows.length; i++)
    for (j = i + 1; j < element.rows.length; j++) {
     switch (sort_type) {
     case 'Num':
      boltmp = (parseInt(element.rows(i).cells(intCol).innerText, 10) >= parseInt(element.rows(j).cells(intCol).innerText, 10));
      break;
     case 'Asc':
     default:
      boltmp = (element.rows(i).cells(intCol).innerText >= element.rows(j).cells(intCol).innerText);
     }
     if ((objCol.sortAsc && !boltmp) || (!objCol.sortAsc && boltmp)) {
      element.moveRow(j, i);
     }
    }
  }
 }
 </script>
</PUBLIC:COMPONENT> 

时间: 2024-09-09 13:49:42

锁定行头和列头的表格组件_htc的相关文章

asp.net导入EXCEL时如何去除行头和列头

问题描述 在导入EXCEL时如何去除行头和列头以及表格下方的按钮?我想只显示表格内容,谢谢!SpreadASP.NET版本 解决方案 解决方案二:那要看你以什么方式读excel如果是oledb,就别想了还是改用npoi吧,可以直接对单元格进行操作解决方案三:publicDataSetLoadDataFromExcel(stringfilePath){try{stringsConnectionString="";if(filePath.EndsWith(".xls")

Swift多列表格组件的实现具备排序功能

1,支持排序的多列表格(multi-column sortable table control)效果图              2,功能说明: (1)表格列头文字增加下划线样式,表示可以点击. (2)点击列头标题,内容条目便会根据该列数据进行排序显示(先升序.后降序,依次交替) (3)排序列背景色会变为蓝色,同时列头会显示上下箭头表示排列顺序. (4)这里排序的上下箭头不是图片,而是使用 Font Awesome 图标字体库.优点是可以很轻松地设置颜色和大小,而不会失真   3,项目代码 (代

Swift多列表格组件的基本功能的例子

与桌面.Web应用不同,受限于屏幕尺寸,移动APP常常采用单列表格来显示列表数据.但有时我们需要使用多列表格来展示数据(比如:报表数据显示,或iPad这种大屏设备上展示多栏数据),这些通过网格(UICollectionView)的自定义布局功能就可以实现.   1,多列表格(multi-column table control)效果图 2,功能说明: (1)表格列头的标题文字加粗,内容区域的文字正常 (2)表格边框为1像素黑色边框 (3)第一列文字居左,其余列文字居中显示(居左的文字离左侧还是有

extaspnet列筛选-extaspnet中表格控件列头筛选

问题描述 extaspnet中表格控件列头筛选 在extaspnet中的表格控件实现excel表格筛选功能,或提供相关插件 解决方案 http://www.cnblogs.com/sanshi/archive/2012/10/09/2716050.html

DBGridEh(增强型表格组件)功能详解

DBGRIDEH 是Enlib 3.0组件包中的组件之一.Enlib 3.0组件包是一位俄国人为增强Borland系列开发工具功能而开发的第三方组件,它具有界面友好.功能强大.开发效率高..快速制作预览/打印简单中国式报表等特点.因此,一推出即受到广大Borland程序员的青睐.目前这个版本支持Borland Delphi versions 4,5,6&7 和 Borland C++ Builder versions 4 & 5 ,可极大地提高数据库应用系统客户端的性能.许多商品软件如&l

JS表格组件神器bootstrap table详解(基础版)_javascript技巧

一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来. 由于Bootstrap Table是Bootstrap的一个组件,所以它是依赖Bootstrap的,我们首先需要添加Bootstrap的引用. 2.使用我们神奇的Nuget 打开Nuget,搜索这两个包 Bootstrap已经是最新的3.3.5了,我们直接安装即可. 而Bootstrap Table的版本竟然是0.4,这也太坑爹了.所以博主建议Boot

sql-网页实现点击列头自动排序!!急!!!!!

问题描述 网页实现点击列头自动排序!!急!!!!! 对整个系统中所有的table实现功能,点击列头对当咧实现自动排序,再点击反向排序. 解决方案 datatables你值得拥有:参考网站:http://blog.csdn.net/qq_19558705/article/details/50393035 解决方案二: JavaScript Table排序表格排序的javascript代码

JS表格组件神器bootstrap table详解(强化版)_javascript技巧

一.Bootstrap Table的引入 关于Bootstrap Table的引入,一般来说还是两种方法: 1.直接下载源码,添加到项目里面来. 由于Bootstrap Table是Bootstrap的一个组件,所以它是依赖Bootstrap的,我们首先需要添加Bootstrap的引用. 2.使用我们神奇的Nuget 打开Nuget,搜索这两个包 Bootstrap已经是最新的3.3.5了,我们直接安装即可. 而Bootstrap Table的版本竟然是0.4,这也太坑爹了.所以博主建议Boot

JS组件系列之Bootstrap table表格组件神器【终结篇】_javascript技巧

bootstrap table系列: JS表格组件神器bootstrap table详解(基础版) JS组件系列之Bootstrap table表格组件神器[终结篇] JS组件系列之Bootstrap table表格组件神器[二.父子表和行列调序] Bootstrap Table是轻量级的和功能丰富的以表格的形式显示的数据,支持单选,复选框,排序,分页,显示/隐藏列,固定标题滚动表,响应式设计,Ajax加载JSON数据,点击排序的列,卡片视图等.那么本文给大家介绍JS组件系列之Bootstrap