当前位置: 首页 > 图文教程 > 网页制作 > HTML/XHTML教程 > 锁定行头和列头的表格组件

HTML/XHTML教程
HTML表格标记教程(29):单元格的亮边框色属性BORDERCOLORLIGHT
XHTML教程:针对初学者的XHTML基础
HTML表格标记教程(27):单元格的背景图像属性BACKGROUND
HTML表格标记教程(26):单元格标记
HTML表格标记教程(24):行的水平对齐属性ALIGN
HTML表格标记教程(25):行的垂直对齐属性VALIGN
HTML表格标记教程(22):行的亮边框色属性BORDERCOLORLIGHT
HTML表格标记教程(23):行的暗边框色属性BORDERCOLORDARK
HTML表格标记教程(20):行的背景色属性BGCOLOR
HTML表格标记教程(21):行的边框色属性BORDERCOLOR
HTML表格标记教程(19):行标记
HTML表格标记教程(17):表格标题垂直对齐属性VALIGN
HTML表格标记教程(18):表格的表头
HTML表格标记教程(15):表格的标题
HTML表格标记教程(16):标题水平对齐属性ALIGN
HTML表格标记教程(13):内部边框样式属性RULES
HTML表格标记教程(14):表格的表头
HTML教程:html水平线段
XHTML入门学习教程:表格标签的应用
XHTML入门学习教程:XHTML网页图片应用

HTML/XHTML教程 中的 锁定行头和列头的表格组件


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-04   浏览: 141 ::
收藏到网摘: n/a

1、在页面中引入风格单定义
<style>
.LockHeadTable {behavior:url(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++) {
 &nb