参照网上的源代码用c#写的一个固定datagrid表头及首列的程序。
使用这个源代码,可以实现datagrid的表头和首列固定。就像是excel的冻结功能
但是当datagrid中的数据超过100条的时候,拖拉滚动条和反应的速度就会变得非常慢。当数据达到600条的时候甚至可能停止一段时间。请问这是什么原因,怎么解决啊??哪位老大知道请不吝赐教。感激不尽http://www.xmlasp.net/n1243c12.aspx 源代码在这个网站。大家可以做参考。

解决方案 »

  1.   

    我觉得慢在:
    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
      

  2.   

    谢谢各位的帮忙。我发的时候疏忽了。请大家原谅在不固定或者只固定表头的时候,都不会出现速度慢的情况。但是只要一固定列,当数据超过100条时,速度就会变慢。那个css确实是重点。特别是固定列的时候~~~
    还有,调程序的时候发现  e.Item.Cells[0].CssClass = "locked"; 这句话在反复不停的执行 
      

  3.   

    改造如下:
       前台:
       <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";
      

  4.   

    谢谢kneek,速度虽然还是有点慢,但是已经有了明显的提高,已经在可以忍受的范围内了。
    但是又有新的问题。就是用这种方法的话,拖动横向滚动条的时候,首行也会跟着向左移动,并且就跟没固定住一样。但是首行以下的其他各行在向左移动的时候都可以英藏在固定列的下面。
      

  5.   

    http://www.jyklzz.com/scroll.htm看这里,用这个方法试一试。
      

  6.   

    请教楼主:我以前也用了你说的方法(你说的网址)。没有实现固定表头的功能,老是说UseAccessibleHeader="True"属性不认识。请教你是怎么实现的?不胜感激!!