2011-03-14 76 views
0

我想实现一个固定的标题功能除了现有的GridView,SGridView的子类。使用滚动条固定表格标题IE8中的GridView中

我的问题是,使用下面列出的解决方案,滚动条出现在标题行下面,看起来很俗气。我宁愿滚动条通过页眉垂直运行到页脚。唯一的问题是,这意味着第一对行将被标题覆盖,因为滚动条高度不包含标题行(我认为这是绝对定位的副作用)。任何想法如何纠正?

我的解决方案由以下部分组成:

<div class="IEScrollDiv"> 
<table class="GridView"> 
    <thead> 
    <tr> <th clas="GVHeader"> my header row</th> </tr> 
    </thead> 
    <tbody> 
    ... 
    </tbody> 
</table> 
</table> 

更多或更少的,增加了额外的代码插入到渲染()方法来包装的表中可以滚动一个div。没什么太花哨。然后,我将表格配置为渲染,并为可访问性添加标签。

因为在IE中添加滚动到tbody是未定义的,所以我无法利用它来创建一个固定的标题(跛脚)。另外,表达式css规则已经从IE8中弃用了,所以我不能使用这种方法(大量的在线教程利用它)。

所以,我通过它的类GVHeader将javascript添加到绝对定位标题行。

感谢

+0

也许下边距添加到滚动DIV ..然后将标题行到保证金区域??? – 2011-03-14 20:58:07

回答

0

对于那些谁可能最终希望实现类似的东西,以为我会后我的解决方案。

我无法得到我想要的确切样子(滚动条穿过标题,而是在它旁边)。

我只是让gridview渲染一个空的div,并带上一个类,使它的x个像素高到包含标题的间隙空间。然后只是将该标题重新定位在该div的顶部。现在滚动条包含标题行作为高度的一部分。

这样的标记看起来像这样到底

<div class="IEScrollDiv"> 
<div class="EmptyDiv"></div> 
<table class="GridView"> 
    <thead> 
    <tr> <th clas="GVHeader"> my header row</th> </tr> 
    </thead> 
    <tbody> 
    ... 
    </tbody> 
</table> 
</table> 

.EmptyDiv 
{ 
    height: 33px; 
    margin: 0; 
    padding: 0; 
    background: #ffffff; 
}