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

页面导航:首页 > 脚本专栏 > htc > 锁定行头和列头的表格组件

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

来源:互联网 作者:脚本宝典 时间:2015-07-21 12:42 【

1、在页面中引入风格单定义 style .LockHeadTable{behavior:url(/oblog312/LockHeadTable.htc)} /style 2、在需要锁定行列头的表格定义中添加语句“class=LockHeadTable”就OK了,其他参数有 ROWHEADNUM=锁定行数

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> 

Tags:

相关文章

    文章评论

    最 近 更 新
    热 点 排 行
    Js与CSS工具
    代码转换工具
    
    <