(转)GridView或DataGrid 固定表头,滚动数据的例子.
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); }
posted on 2012-11-15 15:32 Crystalball 阅读(533) 评论(0) 编辑 收藏 举报