有一个关于这个问题的主题,我已经完成了它们,但是在我的应用程序中实现它们时遇到了麻烦。
我有一个绑定到SqlDataSource的GridView。列宽度的变化取决于内容(我让浏览器处理)。 GridView是可排序的(可以单击标题)并且具有Edit和Delete按钮的列,这些列依赖于每行中的DataKeys。
据我所知,GridView在HTML中呈现为:
<div><table><tbody>
<tr><th></th></tr>
<tr><td></td></tr>
</tbody></table></div>
所以没有Thread部分。
我在StackOverflow上尝试了许多使用CSS或JavaScript或jQuery的解决方案。脚本解决方案似乎依赖于有一个线程,有些人建议将其添加到我的代码隐藏中以在gridview_PreRender中创建线程......
MyGridview.UseAccessibleHeader = true;
MyGridview.HeaderRow.TableSection = TableRowSection.TableHeader;
但是我收到错误,因为MyGridview.HeaderRow不存在,我无法设置为对象的实例(标题),因为它是null。
我还尝试了一些CSS解决方案,例如这里的一个:HTML fixed header table scrollbar 它实际上非常接近我所需要的,除了标题行最终会有一条穿过它的奇数白线。我对此进行了调查,发现它与border-collapse属性有关。我可以使用F12进入Web浏览器的开发人员工具并修复它,但无论我在CSS中设置什么,这都不会在运行时初始加载。
此外,虽然这对我来说在IE中有效,但它无法在Chrome或Safari中正常使用。标题栏将被向左挤压,而不是拉伸以匹配表格其余部分的列的宽度。这很奇怪,因为示例页面在Chrome和Safari中渲染得很好(所以我的其他CSS或代码可能会搞乱这个)。
是否有一些我很遗憾的事情?或者我可能没有提供足够的信息来解决这个问题?理想情况下,这将是一个模块化的解决方案,我可以抛出一堆我的网页(所有人都使用相同的CSS来渲染GridViews),并且将是跨浏览器。我不反对JavaScript解决方案,只要Sortable标头和DataKey按钮持续存在。
答案 0 :(得分:0)
我最终使用的解决方案是手动创建一个带有LinkButtons的表,它将充当标题行,并使用这些按钮的_Click来对Gridview进行排序。然后我使用JavaScript来隐藏Gridview呈现的表格上的标题栏,并将其放在可滚动的div中。它最终工作得很好。