DataGrid1.CurrentPageIndex = e.NewPageIndex;
//把数据再绑定一遍
DataGrid1.DataSource=//
DataGrid1.DataBind();

解决方案 »

  1.   

    把自动分页设为true。在分页事件把数据源在绑定一次,一定要重设数据源。
    如果是小数据量的数据,你可以存在page.viewstate中
      

  2.   

    楼主,绑定DataGrid的方法应是公共方法。如你使用的DataGrid1.DataBind()为DataGrid的绑定方法。翻面:
    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
    DataGrid1.CurrentPageIndex=e.NewPageIndex; //翻页
    }
    应该公共方法为:
    private void BindGrid() //绑定DataGird控件方法
    {
    string strSql="select * from hr_insurance";
    inSet=Conn.method_Reader(strSql,Conn.SqlConn); //读取数据库数据
    Session["inview"]=inSet; //存储数据在Session对象中
    }在dataGrid的事件
    private void DataGrid1_PreRender(object sender, System.EventArgs e)
    {
    //绑定数据源
    this.DataGrid1.DataSource=(DataSet)Session["inview"];
    this.DataGrid1.DataBind();
    }
      

  3.   

    分页后需要重新添充,重新绑定
    最好将绑定代码放入一个函数中
    protected void BindGrid()
    {
      string seleString="select st_id 编号,st_name 姓名,st_zy 专业,st_ds 导师 ,st_date 时间 from tab_st where st_zy="+"'"+DropDownList2.SelectedValue+"'";
      SqlConnection1=new System.Data.SqlClient.SqlConnection(conString);
      SqlDataAdapter1=new System.Data.SqlClient.SqlDataAdapter(seleString,SqlConnection1);
      DataSet1=new DataSet();
      SqlDataAdapter1.Fill(DataSet1,"tab_st");
      DataGrid1.DataSource=DataSet1.Tables["tab_st"].DefaultView;
      DataGrid1.DataMember="tab_st";
        
      SqlConnection1.Open();
      DataGrid1.DataBind();
      SqlConnection1.Close();
    }
    然后这样调用
    private void Button1_Click(object sender, System.EventArgs e)
    {
      BindGrid();
    }private void DataGrid1_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
      DataGrid1.CurrentPageIndex = e.NewPageIndex;
      BindGrid();
    }
      

  4.   

    还有,你用DataAdapter加DataSet的时候没必要手动开关数据连接,DataAdapter是自动开关数据库连接的,所以你
      SqlConnection1.Open();
      DataGrid1.DataBind();
      SqlConnection1.Close();
    其中的的
      SqlConnection1.Open();
      SqlConnection1.Close();
    这两句话可以去掉
      

  5.   

    完整正確的做法及代碼為:(去除你代碼中不必要的語句)
    把自动分页设为true;在分页事件把数据源再绑定一次,一定要重设数据源。
    protected void BindGrid()
    {
      string seleString="select st_id 编号,st_name 姓名,st_zy 专业,st_ds 导师 ,st_date 时间 from tab_st where st_zy="+"'"+DropDownList2.SelectedValue+"'";
      SqlConnection1=new System.Data.SqlClient.SqlConnection(conString);
      SqlDataAdapter1=new System.Data.SqlClient.SqlDataAdapter(seleString,SqlConnection1);
      DataSet1=new DataSet();
      SqlDataAdapter1.Fill(DataSet1,"tab_st");
      DataGrid1.DataSource=DataSet1.Tables["tab_st"].DefaultView;
      DataGrid1.DataBind();
    }private void Button1_Click(object sender, System.EventArgs e)
    {
      BindGrid();
    }private void DataGrid1_PageIndexChanged(object source,System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
      DataGrid1.CurrentPageIndex = e.NewPageIndex;
      BindGrid();
    }
      

  6.   

    问题又来了:
    点击分页后,比如说到第二页,再改变DropDownList2的值,然后再点击查询按钮就报错了."无效的CurrentPageIndex值.它必须大于等于0且小于PageCount."