为什么我的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;
}
}
你的 这些可以 执行到?? 设断点检查下,参考下网上的 例子吧