在使用gridview分页的时候,如何在翻页的时候改变显示的数据?
我看到大多使用的是下面的方法
    protected void GV_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        SearchGridView.PageIndex = e.NewPageIndex;        BindGrid();
    }这里有个疑问,当点击翻页的时候是不是BindGrid();方法都会去连接一次数据库,并且更新datatable,从而显示出来?

解决方案 »

  1.   

    GridView虽然表面上是分页了,但是其实,每次拿出来的还是所有的数据仅仅是把需要展现的给显示出来,不需要的就留在内存
      

  2.   

    看你在BindGrid 方法里的代码是怎么写的吧,一般都是要重新查一次DB的。
    你如果放缓存里那就不用查DB了。个人见解,我菜鸟
      

  3.   

    BindGrid();
    是要重新去数据库读一次数据的
      

  4.   

    aspnetpager控件
    protected void GridViewBind()
            {
                GridView1.DataSource = bllart.GetAllList();
                GridView1.DataBind();
            }
            protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
            {
                GridView1.PageIndex = e.NewPageIndex;
                GridViewBind();
            }
      

  5.   

    是的,BindGrid();方法都会去连接一次数据库,并且更新datatable,从而显示出来!
      

  6.   

    你看看bindgrid里面的代码是不是重新读取数据库获取数据并databind()?
    如果只有databind的话只是把datasource属性的数据复制到gridview并显示出来,不重新从数据库获取。
      

  7.   

    如果用girdview自带,理论上是这样的
      

  8.   

    推荐使用分页控件,效果也不错的,比如AspNetPage
      

  9.   

    试试这个
     public void dlBind()
        {
            int curpage = Convert.ToInt32(this.labPage.Text);
            PagedDataSource ps = new PagedDataSource();
            sqlconn = myCon.getCon();
            sqlconn.Open();
            string sqlstr = "select a.*,b.* from tb_Card as a join tb_Module as b on a.ModuleID=b.ModuleID";
            SqlDataAdapter MyAdapter = new SqlDataAdapter(sqlstr, sqlconn);
            DataSet ds = new DataSet();
            MyAdapter.Fill(ds, "tb_Card");
            ps.DataSource = ds.Tables["tb_Card"].DefaultView;
            ps.AllowPaging = true; //是否可以分页
            ps.PageSize = 2; //显示的数量
            ps.CurrentPageIndex = curpage - 1; //取得当前页的页码
            this.lnkbtnUp.Enabled = true;
            this.lnkbtnNext.Enabled = true;
            this.lnkbtnBack.Enabled = true;
            this.lnkbtnOne.Enabled = true;
            if (curpage == 1)
            {
                this.lnkbtnOne.Enabled = false;//不显示第一页按钮
                this.lnkbtnUp.Enabled = false;//不显示上一页按钮
            }
            if (curpage == ps.PageCount)
            {
                this.lnkbtnNext.Enabled = false;//不显示下一页
                this.lnkbtnBack.Enabled = false;//不显示最后一页
            }
            this.labBackPage.Text = Convert.ToString(ps.PageCount);
            this.dlContent.DataSource = ps;
            this.dlContent.DataKeyField = "CardID";
            this.dlContent.DataBind();
        }
        protected void lnkbtnOne_Click(object sender, EventArgs e)
        {
            this.labPage.Text = "1";
            this.dlBind();
        }
        protected void lnkbtnUp_Click(object sender, EventArgs e)
        {
            this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) - 1);
            this.dlBind();
        }
        protected void lnkbtnNext_Click(object sender, EventArgs e)
        {
            this.labPage.Text = Convert.ToString(Convert.ToInt32(this.labPage.Text) + 1);
            this.dlBind();
        }
        protected void lnkbtnBack_Click(object sender, EventArgs e)
        {
            this.labPage.Text = this.labBackPage.Text;
            this.dlBind();
        }
      

  10.   

    习惯用    存储过程分页+repeater
      

  11.   

    不要用自带的分页功能,最好是自己用sql分页,再有就是第三方分页控件了
      

  12.   

    1、设置分页的GridView1.PageIndex 值
    2、重新连接、读取数据库
    3、绑定到GridView1.DataSource = ds
      

  13.   

    1、设置分页的GridView1.PageIndex 值
    2、重新连接Conn.ConnectionString
    3、读取数据库SELECT * FROM 
    4、创建记录集da.Fill(ds)
    5、绑定到GridView1.DataSource = ds
            GridView1.DataBind()
      

  14.   

    1、设置分页的GridView1.PageIndex 值
    2、重新连接Conn.ConnectionString
    3、读取数据库SELECT * FROM 
    4、创建记录集da.Fill(ds)
    5、绑定到GridView1.DataSource = ds
            GridView1.DataBind()
      

  15.   


    发我一份吧。18楼的同志~~~邮箱:[email protected]
      

  16.   

    自己总结的分页例子:
    第一种方式使用自定义按钮实现分页功能,首页、上一页、下一页、末页及当前页面,总页数,分页几条,跳转第几页。 
    第二种方式使用HyperLinkPager分页控件。ASP.NET GridView分页控件
      

  17.   


    最基本地问题,先把asp.net2.0的入门程序做一遍。http://blog.csdn.net/zhan198271/archive/2008/06/03/2505327.aspx
      

  18.   

    感谢大家的帮助,看了大家的回复有点疑问:
    为什么有人说用gridview自带的分页功能不好?感觉上还是比较方便的,使用起来很简单。
      

  19.   

    之前对gridview分页的概念比较模糊,看了这个明白了许多。