自定义分页,但数据为什么总是显示第一页的呢?并且点页码的时候没有反应

解决方案 »

  1.   

    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
        int startindex;
    startindex=this.DataGrid1.CurrentPageIndex * this.DataGrid1 .PageSize ;
    DataGrid1.CurrentPageIndex =e.NewPageIndex ;
              
    databind();
    LableText();

    }这个不对吗?
      

  2.   

    如果指定allowcustompaging 为假则不存在上述问题
      

  3.   

    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
       DataGrid1.CurrentPageIndex  =e.NewPageIndex ;
              
    databind();
    LableText();

    }这么写
      

  4.   

    private void Page_Load(...)
    {
    if(!IsPostBack)
    BindGrid();
    }private void BindGrid()
    {
    //数据绑定
    }
    private void DataGrid1_PageIndexChanged(...)
    {
    DataGrid1.CurrentPageIndex  =e.NewPageIndex ;
    BindGrid();
    }
      

  5.   

    问题依旧,提供一下测试页面还有源代下载。谢谢了测试:http://210.42.228.252/fenye/WebForm1.aspx
    文件:http://210.42.228.252/fenye/fenye.rar
      

  6.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data .SqlClient;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    namespace fenye
    {
    /// <summary>
    /// WebForm1 
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Panel Panel2;
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.WebControls.Label Label2;
    protected System.Web.UI.WebControls.LinkButton LinkButton1;
    protected System.Web.UI.WebControls.LinkButton LinkButton2;
    protected System.Web.UI.WebControls.LinkButton LinkButton3;
    protected System.Web.UI.WebControls.LinkButton LinkButton4;
    protected System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
    protected System.Data.SqlClient.SqlCommand sqlSelectCommand1;
    protected System.Data.SqlClient.SqlConnection sqlConnection1;
    protected System.Data.DataSet dataSet1;
    protected System.Web.UI.WebControls.Label Label3;
    protected System.Web.UI.WebControls.TextBox TextBox1;
    protected System.Web.UI.WebControls.TextBox TextBox2;
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
    protected System.Web.UI.WebControls.Label Label4;
    protected System.Web.UI.WebControls.Label Label5;
    protected System.Web.UI.WebControls.Button Button1;

    private void Page_Load(object sender, System.EventArgs e)

    {   
    if(!this.IsPostBack )
                       {   this.DataBind ();
       }

    }
    private void databind()
                  {    DateTime dt1 = DateTime.Now;
     this.sqlDataAdapter1.Fill (this.dataSet1 );
     this.DataGrid1 .DataSource =this.dataSet1 .Tables [0].DefaultView ;
     this.DataBind ();
                                     DateTime dt2 = DateTime.Now;
     this.Label3 .Text ="time:"+(dt2-dt1).ToString();
              
    }
    private void LableText()
    {
    this.Label2 .Text ="page " + (DataGrid1.CurrentPageIndex + 1).ToString() ;                              this.Label1 .Text ="page"+(this.DataGrid1.PageCount ).ToString (); }
    private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
    {
        
    DataGrid1.CurrentPageIndex =e.NewPageIndex ;
    databind();
    LableText();

    } private void LinkButton1_Click(object sender, System.EventArgs e)
    {
      DataGrid1.CurrentPageIndex =0;
          databind();
      LableText();
    } private void LinkButton4_Click(object sender, System.EventArgs e)
    {
    if(DataGrid1 .CurrentPageIndex<DataGrid1.PageCount -1)
    {
    this.DataGrid1 .CurrentPageIndex +=1;
                   
    }
        databind();
    LableText();
    } private void LinkButton3_Click(object sender, System.EventArgs e)
    {
    if(DataGrid1.CurrentPageIndex >0)
    {
                    this.DataGrid1 .CurrentPageIndex =DataGrid1 .CurrentPageIndex-1;
    }
         databind();
    LableText();
    } private void LinkButton2_Click(object sender, System.EventArgs e)
    {    
     DataGrid1.CurrentPageIndex = (DataGrid1.PageCount - 1);
         databind();
     LableText();
    } private void Button1_Click(object sender, System.EventArgs e)
    {
    this.DataGrid1 .VirtualItemCount =Int32.Parse (this.TextBox1 .Text );
    this.DataGrid1 .PageSize =Int32.Parse (this.TextBox2 .Text );
    databind();
    this.DataGrid1 .Visible =true;
    LableText();
    } private void DataGrid1_ItemDataBound_1(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item .ItemIndex !=-1)
    {e.Item .Cells [0].Text =(this.DataGrid1.CurrentPageIndex * this.DataGrid1 .PageSize+e.Item.ItemIndex +1).ToString();}

    }
    }
    }
      

  7.   

    楼主的LinkButton的事件与DataGrid1_PageIndexChanged是不是做同一件事(小虾我对c#不是很懂)??呵呵~~如果是把LinkButton的事件删去试试,反之给LinkButton加个commandname,以次来区分DataGrid1_PageIndexChanged事件或其他与datagrid相关事件
      

  8.   

    在分页事件里写下如下代码:
    datagrid1.CurrentPageIndex = e.NewPageIndex;
    再重新绑定一下就OK了