时间:2021-05-22
1、在页面中引入风格单定义
<style>
.LockHeadTable{behavior:url(/oblog312/LockHeadTable.htc)}
</style>
2、在需要锁定行列头的表格定义中添加语句“class="LockHeadTable"”就OK了,其他参数有
ROWHEADNUM="锁定行数"
COLHEADNUM="锁定列数"
ROWHEADSTYLE="行表头风格"
COLHEADSTYLE="列表头风格"
ROWSTYLE="行风格1|行风格2|……|行风格n"
FOCUSSTYLE="获得鼠标焦点时的风格"
3、点击行标题时可以对数据进行排序
注意:
使用本组件时,行表头中的单元格不允许跨行
例:
<tableclass="LockHeadTable"ROWHEADNUM=3COLHEADNUM=1ROWHEADSTYLE="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:PROPERTYNAME="ROWHEADNUM"/>
<PUBLIC:PROPERTYNAME="COLHEADNUM"/>
<PUBLIC:PROPERTYNAME="ROWHEADSTYLE"/>
<PUBLIC:PROPERTYNAME="COLHEADSTYLE"/>
<PUBLIC:PROPERTYNAME="ROWSTYLE"/>
<PUBLIC:PROPERTYNAME="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?newArray(""):ROWSTYLE.split("|"));
//设置行表头
vari,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;
}
}
}
//排序
functionsortTable(){
varobjCol=event.srcElement;
if(objCol.tagName=="TD"){
varintCol=objCol.cellIndex;
objCol.sortAsc=!objCol.sortAsc;
sort_type='Num';
if(isNaN(parseInt(element.rows(ROWHEADNUM).cells(intCol).innerText,10)))
sort_type='Asc';
vari,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>
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Excel当中,用于实现锁定表格的行和列的功能。当我们在制作一个Excel表格时,如果列数较多,行数也较多时,一旦向下滚屏,则上面的标题行也跟着滚动,在处理
Excel当中,用于实现锁定表格的行和列的功能。当我们在制作一个Excel表格时,如果列数较多,行数也较多时,一旦向下滚屏,则上面的标题行也跟着滚动,在处理
Excel当中,用于实现锁定表格的行和列的功能。当我们在制作一个Excel表格时,如果列数较多,行数也较多时,一旦向下滚屏,则上面的标题行也跟着滚动,在处理数据
客户要求实现对表格数据的头几行或者头几列进行冻结,即滚动时保持这几行/列不动,通过网上查找代码,参考已有的代码的思路,实现了可以任意对行、列进行冻结。实现原理:
当在使用iviewTable组件里固定列功能时出现表格不自适应宽度问题具体如下解决这个bug很简单把组件里的width改为minWidth即可columns:[