日期:2014-05-19  浏览次数:20448 次

为什么我的datagrid.pagecount总是0,我快疯了,整整弄了三天分页
//计算页数
public   int   pcount(DataGrid   MyDataGrid)
{
return   MyDataGrid.PageCount;
}
//响应分页事件
public   void   pagechange(string   pagemark,DataGrid   MyDataGrid)
{
int   pcount=this.pcount(MyDataGrid);
switch(pagemark)
{    
case   "first ":
MyDataGrid.CurrentPageIndex=0;
break;
case   "next ":
if(MyDataGrid.CurrentPageIndex <pcount-1) MyDataGrid.CurrentPageIndex+=1; break;
case   "pre ":
if(MyDataGrid.CurrentPageIndex> 0)
MyDataGrid.CurrentPageIndex-=1;
break;
case   "last ":
MyDataGrid.CurrentPageIndex   =   pcount   -   1;
break;
}
}
//是不是点击超连接 <a   href= " "> (runat不是server)不触发IsPostBack事件????????
if(!this.Page.IsPostBack)
{      
this.toptitle.Text= " <div   align=center> <b> 查询结果如下: </b> </div> ";
this.filldate(gj,lx);//将datareader中的内容放入会话表格中,既this.Session[ "searchtable "]);
this.DataGrid2.VirtualItemCount=((DataTable)this.Session[ "searchtable "]).Rows.Count;
//用于检测是first,next,pre,last,以便触发上一页,下一页,最后页,首页
if(this.Request.QueryString[ "type "]!=null)
{
string   type=this.Request.QueryString[ "type "].ToString();
this.pagechange(type,this.DataGrid2);
this.Response.Write(this.DataGrid2.CurrentPageIndex);//测试用,但每次都是0
startIndex   =   this.DataGrid2.CurrentPageIndex   *   this.DataGrid2.PageSize;
this.Response.Write(this.DataGrid2.PageCount);//测试用,但每次都是0
this.BindGrid();
}
else
{
this.BindGrid();    
}
}
//OnPageIndexChanged= "mydatechange "(html中触发DataGrid2分页),该段代码实现了
protected   void   mydatechange(object   source,   System.Web.UI.WebControls.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();
}
//其中DataGrid2自带的页码实现了,但就是上页下页,首页,末页总也出现currentpageindex=0,pagecount=0我也不知道是为什么?????????

------解决方案--------------------
查一下你的sql语句吧。有没有记录。
------解决方案--------------------
应该放在数据绑定动作之后才行吧
------解决方案--------------------
是不是page_load事件里的bind方法没放在IsPostBack中的问题?
------解决方案--------------------
热烈祝贺ASP.NET群7947148成立了。
------解决方案--------------------
public void pagechange(string pagemark,DataGrid MyDataGrid)
{
int pcount=this.pcount(MyDataGrid);
switch(pagemark)
{
case "first ":
MyDataGrid.CurrentPageIndex=0;
break;
case "next ":
if(MyDataGrid.CurrentPageIndex <pcount-1)MyDataGrid.CurrentPageIndex+=1;break;
case "pre ":
if(MyDataGrid.CurrentPageIndex> 0)
MyDataGrid.CurrentPageIndex-=1;
break;
case "last ":
MyDataGrid.CurrentPageIndex = pcount - 1;
break;
}
}
你的 这些可以 执行到?? 设断点检查下,参考下网上的 例子吧