在页面加载的时候,执行了一次GirdView的绑定,显示的是ID=2的,当我点按钮的时候,会把这个表中所有信息显示出来,每页显示5条,当我点第二页的时候,第二页的内容不出来,还是显示ID=2的那条。这是怎么回事?
代码如下:
SqlConnection con;
    SqlDataAdapter da;
    DataSet ds = new DataSet();
    protected void Page_Load(object sender, EventArgs e)
    {
        con = new SqlConnection("server=.;uid=sa;database=pubs");
        if (!IsPostBack)
        {
            GridViewDataBind();
        }       
    }
public void GridViewDataBind()
    {
        string SQLstr = "select * from jobs where job_id =2";
        da = new SqlDataAdapter(SQLstr,con);
        da.Fill(ds);        GridView1.DataSource = ds.Tables[0];
        GridView1.AllowPaging = true;
        GridView1.PageSize = 5;
        GridView1.DataBind();
    }
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridViewDataBind();
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        da = new SqlDataAdapter("select * from jobs",con);
        da.Fill(ds);        GridView1.DataSource = ds.Tables[0];
        GridView1.AllowPaging = true;
        GridView1.PageSize = 5;
        GridView1.DataBind();
    }

解决方案 »

  1.   


    你可以用断点调试一下看看,过程是怎么执行的!!
    看看在点击button的时候执行的是什么步骤!!
      

  2.   

    如果你点击Button
    按钮的时候它应该不会执行PageIndexchanging事件!!
      

  3.   

    在Button_Click事件里,你将数据库中的所有数据(select * from jobs)取出来绑定,而在分页事件(GridView1_PageIndexChanging)里,你将ID=2的数据(select * from jobs where job_id =2)取出来绑定,所以分页的时候,会按照ID=2的数据来分页。
      

  4.   

    当我点第二页的时候,第二页的内容不出来,还是显示ID=2的那条。这是怎么回事?
    ==========>
    分页事件里写的是获取ID=2的数据记录集,当然显示ID=2的那条。
    第二页的内容不出来,你确定ID=2的记录数有>5条吗?
      

  5.   

    这是一个例子,真实项目代码太多,我没贴出来,意思是一样的,页面加载的时候显示的为当日的数据,点button的时候,显示全部的数据,可是再点分页后,还是显示当日的数据。
    =========================================================
    我就是想在分页绑定的时候想想办法,怎么样能绑定两次,页面加载的时候绑定的是ID=2的数据,当点第二页的时候,显示的是button绑定的数据
      

  6.   

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            GridViewDataBind();//问题出在这里
        }
    当你点击第二页时,执行GridViewDataBind方法,而GridViewDataBind方法是取ID=2的数据。
      

  7.   

    protected void Button1_Click(object sender, EventArgs e)
    {
    da = new SqlDataAdapter("select * from jobs",con);
    da.Fill(ds);GridView1.DataSource = ds.Tables[0];
    GridView1.AllowPaging = true;
    GridView1.PageSize = 5;
    GridView1.DataBind();
    }
    点击BUTTON后你的DG的数据源已经变了,再点下一页,当然不是你想要的JOBS列表的下一页了
      

  8.   

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            //GridViewDataBind();
            Button1_Click(this.Button1, EventArgs.Empty)    }
      

  9.   

    解决办法:
    static int m=0;
    SqlConnection con;
        SqlDataAdapter da;
        DataSet ds = new DataSet();
        protected void Page_Load(object sender, EventArgs e)
        {
            con = new SqlConnection("server=.;uid=sa;database=pubs");
            if (!IsPostBack)
            {
                GridViewDataBind();
            }       
        }
    public void GridViewDataBind1()
        {
            m=0;
            string SQLstr = "select * from jobs where job_id =2";
            da = new SqlDataAdapter(SQLstr,con);
            da.Fill(ds);        GridView1.DataSource = ds.Tables[0];
            GridView1.AllowPaging = true;
            GridView1.PageSize = 5;
            GridView1.DataBind();
        }
    public void GridViewDataBind2()
        {
            m=1;
            string SQLstr = "select * from jobs";
            da = new SqlDataAdapter(SQLstr,con);
            da.Fill(ds);        GridView1.DataSource = ds.Tables[0];
            GridView1.AllowPaging = true;
            GridView1.PageSize = 5;
            GridView1.DataBind();
        }
        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            if(m==0)
              GridViewDataBind1();
            if(m==1)
              GridViewDataBind2();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            m=1;
            da = new SqlDataAdapter("select * from jobs",con);
            da.Fill(ds);        GridView1.DataSource = ds.Tables[0];
            GridView1.AllowPaging = true;
            GridView1.PageSize = 5;
            GridView1.DataBind();
        }
      

  10.   

    【翻译】ASP.NET 2.0中Gridview的分页与排序
    http://bbs.msproject.cn/Default.aspx?g=posts&t=434
      

  11.   

    你的这个事件中:
    protected   void   Button1_Click(object   sender,   EventArgs   e) 
            { 
                    da   =   new   SqlDataAdapter( "select   *   from   jobs ",con); 
                    da.Fill(ds);                 GridView1.DataSource   =   ds.Tables[0]; 
                    GridView1.AllowPaging   =   true; 
                    GridView1.PageSize   =   5; 
                    GridView1.DataBind(); 
            }
    SqlDataAdapter被两次赋值了,第二次是在GridView1.DataBind(); 中。
    请注意。