参照网上的源代码用c#写的一个固定datagrid表头及首列的程序。
使用这个源代码,可以实现datagrid的表头和首列固定。就像是excel的冻结功能
但是当datagrid中的数据超过100条的时候,拖拉滚动条和反应的速度就会变得非常慢。当数据达到600条的时候甚至可能停止一段时间。请问这是什么原因,怎么解决啊??哪位老大知道请不吝赐教。感激不尽http://www.xmlasp.net/n1243c12.aspx 源代码在这个网站。大家可以做参考。
使用这个源代码,可以实现datagrid的表头和首列固定。就像是excel的冻结功能
但是当datagrid中的数据超过100条的时候,拖拉滚动条和反应的速度就会变得非常慢。当数据达到600条的时候甚至可能停止一段时间。请问这是什么原因,怎么解决啊??哪位老大知道请不吝赐教。感激不尽http://www.xmlasp.net/n1243c12.aspx 源代码在这个网站。大家可以做参考。
left: expression(document.getElementById("div-datagrid").scrollLeft-2);
和
top: expression(document.getElementById("div-datagrid").scrollTop-2);
在CSS里面添加js表达式,我个人经验觉得这个是比较慢的.但是这好像又是这个例子的一个关键步骤.你可以参考一下我在下文中描述的一种方法,这个方法只能固定列头.但是里面并没有用到上面的css+js,在这里我重写了DataGrid的呈现方法.
http://dev.csdn.net/develop/article/25/25538.shtm
还有,调程序的时候发现 e.Item.Cells[0].CssClass = "locked"; 这句话在反复不停的执行
前台:
<style>
.fixTitle
{
/*color: black;
position: relative;
top: expression(this.offsetParent.scrollTop);
z-index:10;*/
background:white;
position:relative;
top: expression(this.offsetParent.scrollTop); /* IE5+ only */
}
.fixcolumn
{
background:white;
color:black;
position:relative;
left:expression(this.offsetParent.scrollLeft);
}
</style>
<DIV style="Z-INDEX: 102; LEFT: 2px; OVERFLOW: auto; WIDTH: 500px; POSITION: relative; TOP: 2px; HEIGHT: 320px" ms_positioning="GridLayout">
<asp:datagrid id="DataGrid1" style="Z-INDEX: 103;" runat="server" CellPadding="0" BorderWidth="1px" BorderStyle="None" AutoGenerateColumns="true">
<HeaderStyle Font-Bold="True" CssClass="fixTitle"></HeaderStyle>
<AlternatingItemStyle BackColor="#eeeeee"></AlternatingItemStyle>
<ItemStyle BackColor="#fefefe"></ItemStyle>
</asp:datagrid>
</DIV>
后台:
加入DataGrid1_ItemDataBound()方法中加入如下代码:
e.Item.Cells[0].CssClass="fixcolumn";
但是又有新的问题。就是用这种方法的话,拖动横向滚动条的时候,首行也会跟着向左移动,并且就跟没固定住一样。但是首行以下的其他各行在向左移动的时候都可以英藏在固定列的下面。