//html代码
<asp:datagrid id="DataGrid2" runat="server" Width="320px" AutoGenerateColumns="False" ShowHeader="False"
GridLines="None" AllowCustomPaging="True" PageSize="2" AllowPaging="True" OnPageIndexChanged="DataGrid2_Page">//该事件好象一直没触发义
<Columns>
<asp:TemplateColumn>
<ItemTemplate>
&nbsp;<IMG src="/liu/images/arrow.gif">&nbsp;
</ItemTemplate>
</asp:TemplateColumn>
<asp:HyperLinkColumn Target="_parent" DataNavigateUrlField="pid" DataNavigateUrlFormatString="pshowdetail.aspx?id={0}"
DataTextField="ptitle"></asp:HyperLinkColumn>
<asp:TemplateColumn>
<ItemTemplate>
[
</ItemTemplate>
</asp:TemplateColumn>
<asp:BoundColumn DataField="ptime" DataFormatString="{0:d}"></asp:BoundColumn>
<asp:BoundColumn DataField="phit"></asp:BoundColumn>
<asp:TemplateColumn>
<ItemTemplate>
<font color="#33ff00">次</font>]
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:datagrid>
 //page_load()
 if(!this.Page.IsPostBack)
{   
this.toptitle.Text="<div align=center><b>查询结果如下:</b></div>";
this.filldate(gj,lx);
this.DataGrid2.VirtualItemCount=((DataTable)this.Session["searchtable"]).Rows.Count;
this.Response.Write(this.DataGrid2.VirtualItemCount);
this.BindGrid();
}
                  //分页事件
protected void DataGrid2_Page(Object sender,DataGridPageChangedEventArgs e) 
{
this.DataGrid2.CurrentPageIndex = e.NewPageIndex;
startIndex = this.DataGrid2.CurrentPageIndex * this.DataGrid2.PageSize;
BindGrid();
}
//绑定
private void BindGrid() 
{
this.DataGrid2.DataSource = CreateDataSource();
this.DataGrid2.DataBind();

                  //设计器支持所需的方法
private void InitializeComponent()
{     this.DataGrid2.PageIndexChanged+=new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid2_Page);

this.Load += new System.EventHandler(this.Page_Load); }

解决方案 »

  1.   

    不是OnPageIndexChanged事件是PageIndexChanging事件。
     protected void grdVendors_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gridView.PageIndex = e.NewPageIndex;
            gridView.DataSource = datasurce;
            gridView.DataBind();
        }
      

  2.   

    我是效仿这个网页作的
    http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemwebuiwebcontrolsdatagridclassallowcustompagingtopic.asp
      

  3.   

    //另外我把所有代码都添上,看是不是中间有问题!!!!!!!!!!!谢谢了      
      //将Datareader内容写入datatable
    private void filldate(string gj,string lx)
    {
       DataTable dt=new DataTable();
       dt.Columns.Add(new DataColumn("pid", typeof(Int32)));
       dt.Columns.Add(new DataColumn("ptitle",typeof(string)));
       dt.Columns.Add(new DataColumn("ptime",typeof(string)));
       dt.Columns.Add(new DataColumn("phit", typeof(Int32)));
       sdr=tool.psearch(gj,lx,"psearch");//sdr是通过Datareader读取数据
       while(sdr.Read())
    {  
      DataRow dr=dt.NewRow();
          dr[0]=Int32.Parse(sdr["pid"].ToString());
      dr[1]=sdr["ptitle"].ToString();
      dr[2]=Convert.ToDateTime(sdr["ptime"].ToString());
      dr[3]=Int32.Parse(sdr["phit"].ToString());
      dt.Rows.Add(dr);
        }
               sdr.Close();
       this.Session["searchtable"]=dt;
    }
    //创建数据源
    private ICollection CreateDataSource() 
    {
    DataRow dr;
                DataTable dtnew=new DataTable("currenttable");
    DataTable dt=(DataTable)this.Session["searchtable"];
    dtnew=dt.Copy();
    for (int i = startIndex; i < (startIndex + this.DataGrid2.PageSize); i++) 
    {
    dr = dtnew.NewRow();
    dr[0] = Int32.Parse(dt.Rows[i][0].ToString());
    dr[1] = dt.Rows[i][1].ToString();
    dr[2] = Convert.ToDateTime(dt.Rows[i][2].ToString());
    dr[3] = Int32.Parse(dt.Rows[i][3].ToString());
    dtnew.Rows.Add(dr);
    }
    DataView dv = new DataView(dtnew);
    return dv;
    }
      

  4.   

    http://dotnet.aspx.cc/article/b12283de-db20-4322-accc-12724442808a/read.aspx
    看看这个
      

  5.   

    我刚看过了,但他的分页没用到AllowCustomPaging="True"这个属性牙
      

  6.   

    我试出来了只要在//创建数据源加这些就可以拉
    if(this.Page.IsPostBack)
    {
    for(int i=0;i<dtnew.Rows.Count;i++)
    {  
    dtnew.Rows.Remove(dtnew.Rows[i]); 
    dtnew.Rows.Clear();
    dtnew.Dispose();
    }
    }