Html ASP.NET Gridview固定标题可滚动不工作

Html ASP.NET Gridview固定标题可滚动不工作,html,css,asp.net,gridview,Html,Css,Asp.net,Gridview,关于这个问题有很多话题,我已经讨论过了,但是在为我的应用程序实现它们时遇到了困难 我有一个绑定到SqlDataSource的GridView。列宽根据内容的不同而变化(我让浏览器来处理)。GridView是可排序的(可以单击标题),并具有带有编辑和删除按钮的列,这些按钮取决于每行中的数据键 据我所知,GridView在HTML中呈现为: <div><table><tbody> <tr><th></th></tr&g

关于这个问题有很多话题,我已经讨论过了,但是在为我的应用程序实现它们时遇到了困难

我有一个绑定到SqlDataSource的GridView。列宽根据内容的不同而变化(我让浏览器来处理)。GridView是可排序的(可以单击标题),并具有带有编辑和删除按钮的列,这些按钮取决于每行中的数据键

据我所知,GridView在HTML中呈现为:

<div><table><tbody>
  <tr><th></th></tr>
  <tr><td></td></tr>
</tbody></table></div>
但是我得到了一个错误,因为MyGridview.HeaderRow不存在,我不能设置为对象(header)的实例,因为它是空的

我还尝试了一些CSS解决方案,比如这里介绍的: 它实际上非常接近我所需要的,除了标题行最后会有一条奇怪的白线穿过它。我对此进行了调查,发现这与边界坍塌财产有关。我可以将F12插入web浏览器的开发工具中并修复它,但无论我在CSS中设置了什么,它最初都不会在运行时加载

此外,虽然这在IE中对我有效,但在Chrome或Safari中却无法正常工作。标题栏将向左压缩,而不是拉伸以匹配表其余部分的列宽度。这很奇怪,因为示例页面在Chrome和Safari中呈现得很好(所以我的其他CSS或代码可能会弄乱这一点)


有没有什么明显的东西我遗漏了?或者我没有提供足够的信息来解决这个问题?理想情况下,这将是一个模块化的解决方案,我可以在我的一堆网页上使用它(这些网页都已经使用相同的CSS来呈现GridView),并且是跨浏览器的。我不反对JavaScript解决方案,只要可排序的标题和数据键按钮保持不变。

我最终使用的解决方案是手动创建一个带有链接按钮的表,链接按钮将充当标题行,并使用这些按钮的点击对Gridview进行排序。然后,我使用JavaScript隐藏Gridview呈现的表上的标题栏,并将其放在可滚动的div中。它最终运行得非常好。

我仍然没有找到解决此问题的好方法。我开始为gridview标题构建第二个表(打算使用JS匹配列宽度,以便与gridview匹配),这类工作在IE中进行。我可以让该表在宽度方面匹配。但它在Chrome中失败了。就好像我的JavaScript在Chrome中什么都不做一样。var gridView=document.getElementByID('gridView');var tableHeader=document.getElementByID('header');对于(var i=0,cell;cell=gridView.rows[0]。cells[i];i++){tableHeader.rows[0]。cells[i]。宽度=(cell.scrollWidth)+“px”}
MyGridview.UseAccessibleHeader = true;
MyGridview.HeaderRow.TableSection = TableRowSection.TableHeader;