首页上面用了5个gridview,从数据库中的5个表里查询数据进行绑定,也用了5个sqlsource,,需要从数据库中取出的数据进行处理,比如在第一个字段前加上一个“.”,所以用了5个foreach,分别对5个控件进行循环遍历,如下:
 foreach (GridViewRow gvr in dhxxgw.Rows)
            {                ((Label)gvr.FindControl("name")).Text = "•  " + ((Label)gvr.FindControl("name")).Text;            }
这样的结果就是打开首页非常慢,请问有什么解决办法吗?

解决方案 »

  1.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string str = e.Row.Cells[0].Text;
                e.Row.Cells[0].Text = "."+str;
            }
            
        }
      

  2.   

    就把aspx 生成静态html。一般cms都这样做的
    想想 每次用户访问你的网站都 要连接数据库。
      

  3.   

    如果不会静态化的话。
    用个轻量级控件吧repeater.使用这个足够了。前台尽量不要用gridview这种控件,虽然方便,要付出一点代价。
      

  4.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                band(1,DataList1);
                band(2,DataList2);
                band(3,DataList3);
                band(4,DataList4);
            }
        }
        void band(int id, DataList datalist)
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["sql"]);
            SqlDataAdapter da = new SqlDataAdapter("select * from new where categoryid="+id,con);
            DataSet ds = new DataSet();
            da.Fill(ds);
            datalist.DataSource = ds;
            datalist.DataBind();
        }
      

  5.   

    LZ干吗要用那多的控件 还有foreach语句 
    不是有先可以写方法然后直接调用就可以了
     如果数据量很大的话建议写存储过程分页
      

  6.   

    没什么意思的 东西 GIRDVIEW 不久会淘汰。我是这么认为的。
      

  7.   


    你的意思是说lz应该等待你毕业之后进入微软,然后给大家发布个新的GridView控件?
      

  8.   

    首页,一个每小时被反复访问几万次以上的东西,如果你不会使用Output说不过去。
      

  9.   

    后来发现速度慢竟然是别的原因,跟gridview没有关系,
      

  10.   

    可以考虑用一个绑定方法,多次绑定。
    读取数据时可以考虑用一个存储过程(同时写多个查询语句),然后读取到虚拟表中,具体方法LZ可以baidu下,用dataset,datatable轻量访问。