GridView 先天不足,如果使用自己画表头,这样做 UI 的时间太长了,于是 google 了一下。net_lover 给出了一套解决方法,他的文章当中没有对原理进行说明,我就说说自己的理解和想法吧。
老孟的实现方法,是定义了两个 DIV,上面的 DIV 用来显示表头(HTML 1~2 行),下面的 DIV 用来显示表体(HTML 3~8 行),通过设置 CSS 实现滚动条的效果。在页面加载时,通过 JavaScript 将 GridView 的内容 Clone 一份,再将 Clone 后的节点添加到表头的 DIV 当中,这样是为了使外观风格一致。最关键的一步是,删除表头的 DIV 中除第一行以外的全部 Node(JavaScript 7~10 行),删除表体 DIV 的第一行(JavaScript 12 行)。
这样作的确很方便,但是,如果 GridView 的数据量很大,页面加载的时间将非常长。我们首先要 Clone 全部的节点,然后再删除 N-1 个节点,太废时了。
以下是我调整风格后的代码片段,为了增加阅读性而已。
1
<div id="divGridViewHeader">
2
</div>
3
<div id="divGridViewBody" style="overflow-y: scroll; height: 200px; width: 580px;">
4
<asp:GridView ID="gvScrollDemo" runat="server" Font-Size="12px" BackColor="#FFFFFF"
5
GridLines="Both" CellPadding="4" Width="560">
6
<HeaderStyle BackColor="#EDEDED" Height="26px" />
7
</asp:GridView>
8
</div>
2
3
4
5
6
7
8
1
function initGridView()
2
}
2