GridView或DataGrid 固定表头,滚动数据的例子.

本文介绍了一种方法,通过设置table的`layout=fixed`属性并在GridView或DataGrid前面复制一个带有表头的table,来实现固定表头而数据滚动的效果。在实现时,需要注意为datagrid或gridview添加`style="table-layout:fixed"`和`width`属性,并可选设置`viewheight`属性来指定滚动内容区域的高度。此解决方案已在IE7和Firefox上进行了测试并成功运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.主要利用table style的 layout=fixed属性按照当前表头再copy一个table,显示在当前datagrid或gridview的前面.

2.注意:调用的时候,datagrid 或gridview       要有style="table-layout:fixed" 和 width=?? 属性.

  另外还有个自定义属性 viewheight 是可选,表示滚动内容区域的高度

  脚本中更改一下DataGrid或GridView的ID即可.

  该示例在IE7 和 FireFox下测试通过.

以下是示例:

 <asp:GridView style="table-layout:fixed"  viewheight="100"  ........

 


DoScrollTable(
" GridView1 " );
function  DoScrollTable(id)
 
{
     
var tb = document.getElementById(id);
     
var eNext = tb.nextSibling;
     
     
var th = tb.cloneNode(true)
        
     
     
//记录宽度
     var ary  = new Array();
     
var width = tb.offsetWidth;
     
var height = tb.offsetHeight;
     
for(var i=0;i<tb.rows[0].cells.length;i++)
     
{
        ary[i] 
= tb.rows[0].cells[i].offsetWidth;
     }

     
     
while(true && th.rows.length>1)
     
{
         th.deleteRow(
1);
     }

    
     tb.deleteRow(
0)
     
     
var divHeader = document.createElement("div");
     
var divBody = document.createElement("div");
     tb.parentNode.replaceChild(divHeader,tb);
     divHeader.appendChild(th);
     
if(eNext)
     
{
        divHeader.parentNode.insertBefore(divBody,eNext);
     }
else
     
{
        divHeader.parentNode.appendChild(divBody);
     }

     divBody.appendChild(tb);
     divHeader.style.cssText 
= "width:100%;overflow:hidden";
     
if(!document.all)
     
{
       
// divHeader.style.cssText = "width:"+(divBody.offsetWidth-20)+"px";
         
        th.width 
= divBody.offsetWidth-16;
     }

     
     divBody.style.cssText 
= "width:100%;overflow-y:auto;overflow-x:hidden;height:"+tb.getAttribute("viewheight"+"px";
     th.style.cssText 
="table-layout:fixed"
     tb.style.cssText 
="table-layout:fixed"
     
     
if(parseInt(tb.getAttribute("viewheight").replace(/px/gi,"")) > height)
     
{
        divBody.style.height 
= height;
     }

     
//th.width =  null;
     if(tb.rows.length>0)
      
{
        
var tr1 = tb.rows[0];
        
var th0 = th.rows[0];
        
//th0.className = null;
        for(var i=0 ;i<tr1.cells.length;i++)
        
{   
            th0.cells[i].style.width 
= ary[i];
            tr1.cells[i].style.width 
= ary[i];
            
if(!document.all)
            
{
                th0.cells[i].width 
= ary[i];
                 tr1.cells[i].width 
= ary[i];
            }

        }

     }

     
     
      
     
     
     
//alert(th.rows[0].cells[0].offsetWidth);
     //alert(tb.rows[0].cells[0].offsetWidth);
     //tb.rows[0].cells[0].style.width = "627px"
     //alert(tb.rows[0].cells[0].offsetWidth);
}

 

 

 

 

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值