我给GridView绑定了一个AspNetPager分页控件, 程序运行没问题,可以点下一页的话,就出现异常,各位帮我看看
页面cs代码是这样写的 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["mid"] != null)
{
ViewState["mid"] = Request.QueryString["mid"].ToString();
Bind();
}
}
} //绑定数据源
public void Bind()
{
try
{
MODULE_MenuContent mc = new MODULE_MenuContent();
mc.Mid = Convert.ToInt32(ViewState["mid"].ToString());
mc.Size = AspNetPager1.PageSize;
mc.Index = AspNetPager1.CurrentPageIndex; //查询记录集
mc.Docont = 0;
PagedDataSource pds = new PagedDataSource();
DataTable dt = (DataTable)bll.Pager(mc);
pds.DataSource = dt.DefaultView;
Response.Write(pds.DataSourceCount.ToString());
pds.AllowPaging = true;
pds.PageSize = AspNetPager1.PageSize;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
GridView1.DataSource = pds;
GridView1.DataBind();
}
catch (Exception ex)
{
js.JsMsg(ex.Message);
}
} protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
Bind();
}
存储过程是这样的,测试没有问题create procedure MenuContent_pager
@mid int,--菜单编号
@pagesize int,--每页行数
@pageindex int--页索引
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select id from MenuContent where mid=@mid order by addtime desc
select O.id,O.title,O.content,O.addtime,O.click from MenuContent O,@indextable t where O.id=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id
end
set nocount off
GO
页面cs代码是这样写的 protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["mid"] != null)
{
ViewState["mid"] = Request.QueryString["mid"].ToString();
Bind();
}
}
} //绑定数据源
public void Bind()
{
try
{
MODULE_MenuContent mc = new MODULE_MenuContent();
mc.Mid = Convert.ToInt32(ViewState["mid"].ToString());
mc.Size = AspNetPager1.PageSize;
mc.Index = AspNetPager1.CurrentPageIndex; //查询记录集
mc.Docont = 0;
PagedDataSource pds = new PagedDataSource();
DataTable dt = (DataTable)bll.Pager(mc);
pds.DataSource = dt.DefaultView;
Response.Write(pds.DataSourceCount.ToString());
pds.AllowPaging = true;
pds.PageSize = AspNetPager1.PageSize;
pds.CurrentPageIndex = AspNetPager1.CurrentPageIndex - 1;
GridView1.DataSource = pds;
GridView1.DataBind();
}
catch (Exception ex)
{
js.JsMsg(ex.Message);
}
} protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
Bind();
}
存储过程是这样的,测试没有问题create procedure MenuContent_pager
@mid int,--菜单编号
@pagesize int,--每页行数
@pageindex int--页索引
as
set nocount on
begin
declare @indextable table(id int identity(1,1),nid int)
declare @PageLowerBound int
declare @PageUpperBound int
set @PageLowerBound=(@pageindex-1)*@pagesize
set @PageUpperBound=@PageLowerBound+@pagesize
set rowcount @PageUpperBound
insert into @indextable(nid) select id from MenuContent where mid=@mid order by addtime desc
select O.id,O.title,O.content,O.addtime,O.click from MenuContent O,@indextable t where O.id=t.nid
and t.id between @PageLowerBound+1 and @PageUpperBound order by t.id
end
set nocount off
GO
分不够我再加
高手快来帮我看看啊
既然用到aspnetpager控件就没有必要再用pagedDataSource对象了lz可以看一下aspnetpager是如何调用并绑定数据服务器控件的实例.一般的aspnetpager控件,你只需要传给它两个参数就可以了一个是 pagesize,还一个就是Recordcount (数据的记录数:这个是由你的存储过程返回来的结果集的记录数)