华域联盟 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> 

本文由 华域联盟 原创撰写:华域联盟 » 锁定行头和列头的表格组件

转载请保留出处和原文链接:https://www.cnhackhy.com/75197.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部