修复了带有滚动条的表头在IE8中的GridView上

时间:2011-03-14 20:53:38

标签: jquery asp.net gridview

我正在尝试在GridView的现有子类SGridView中实现固定标头功能。

我的问题是,使用下面列出的解决方案,滚动条显示在标题行下方,看起来很俗气。我希望滚动条垂直穿过页眉到页脚。唯一的问题是,这意味着头部将覆盖前几行,因为滚动条高度不考虑包含标题行(我假设这是绝对定位的副作用)。有关如何纠正的任何想法?

我的解决方案包括以下内容:

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

或多或少,在Render()方法中添加了额外的代码,以将表包装在可以滚动的div中。没什么太花哨的。然后我将表配置为render,和标签以便于访问。

由于在IE中添加滚动到tbody未定义,我无法利用它来创建固定标头(跛脚)。另外,表达式css规则已经从IE8中弃用了,所以我也不能使用这种方法(很多教程在线使用它)。

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

由于

1 个答案:

答案 0 :(得分: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;
}