做了一个页面,只简单显示数据而已,页面显示非常慢,查看"任务管理器",
CPU和内存都正常,但就是页面显示慢,导致慢的原因有哪些呢?请大家帮忙分析下,先叩谢了

解决方案 »

  1.   

    用dataSet来装载数据集,填在dataTable里,再来装datagrid,代码如下:
    strSql="select top 500 Id,colA,colB,colC.........from tableA "
    objData.ExcSqlDataSet(strSql,"tableA",ref objDs); --这句是取得dataset的数据集
    DataTable dt=new DataTable();
    DataRow dr;
    dt.Columns.Add(new DataColumn("选择"));
    dt.Columns.Add(new DataColumn("信息ID"));
    intRowsCount=objDs.Tables["tableA"].Rows.Count;
        for( int i=0;i<intRowsCount;i++)
        {
    dr=dt.NewRow();
             dr[0]="a"
             dr[1}="b"
             ....
             dt.Rows.Add(dr);
         }
    DataView dv=new DataView(dt);
    infoDataGrid.DataSource=dv;
    infoDataGrid.DataBind();
    ----------
    代码只是简单的这样子,内存和CPU都占得少,为什么页面就那么慢,狂晕中...........
      

  2.   

    for( int i=0;i<intRowsCount;i++)
        {
    dr=dt.NewRow();
             dr[0]="a"
             dr[1}="b"
             ....
             dt.Rows.Add(dr);
         }
    }
    为什么非要这样呢?效率低就低在这里,同意的请举手!
      

  3.   

    TO:qinhl99(林鸿) 
       因为表格里有80%的列需要做超连接,对于这个要求我也很郁闷,所以才采用了这种表格的方法,就是在创建表格的过程中,把每列的超连接做好,然后绑给datagrid
       就这种情况,有其他好的解决方法吗?TO:srz007(呵呵) 
      我的机器还好
      

  4.   

    你可以这样试下,不过我不确定是否能极大的提高效率
    infoDataGrid数据装载直接使用objDs.Tables["tableA"]
    然后你写一个public方法专门用来格式化需要加连接的行
    在前台需要加连接的地方掉用这个方法
      

  5.   

    我同意qinhl99(林鸿):举“脚”行不?
      

  6.   

    没看到下面的,慢就是因为你先把每个需要做超级连接的列都循环了一次,又把做好连接的列循环给DataTable。
    问题就在
      for( int i=0;i<intRowsCount;i++)
        {
    dr=dt.NewRow();
             dr[0]="a"
             dr[1}="b"
             ....
             dt.Rows.Add(dr);
         }
    其中你是不是每循环一次都在给所有的列设置超连接啊,这样就是(循环次数*列数)那一定慢了
      

  7.   

    累就一个字!哎.....
    折腾了半天,终于知道原因在哪了,
     order by ...
    没有建索引:(,表里有30W左右的数据,哭死.........
    谢过大家了!
    上头那样的绑数据方式,对速度影响不是很明显.
    另外再问下finally在什么时候执行?
    public aa()
    {
     conn = new SqlConnection(ConnStr);
    objComm = new SqlCommand(strSql,conn);
    try
    {
    conn.Open();

    }
    catch(Exception e)
    {
    .....
    }
    finally
    {
    Dispose(conn);
    }
    }我在页面调用了这个方法,但是在页面上我没有写关闭对象的方法,这时候不知道public aa()里开
    辟的对象关闭了没?
      

  8.   

    另外再问下finally在什么时候执行?
    public aa()
    {
     conn = new SqlConnection(ConnStr);
    objComm = new SqlCommand(strSql,conn);
    try
    {
    conn.Open();

    }
    catch(Exception e)
    {
    .....
    }
    finally
    {
    Dispose(conn);
    }
    }我在页面调用了这个方法,但是在页面上我没有写关闭对象的方法,这时候不知道public aa()里开
    辟的对象关闭了没?
      

  9.   

    finally 在最后都要执行
    conn已关闭
      

  10.   

    OK,谢谢winesmoke()
    谢谢大家
      

  11.   

    用循环去绑定datagrid,速度确实慢,这种方法确实不可行