anpnetpager Url 分页错误

冬天的糊涂神 2007-09-26 11:12:39
UrlPaging 设置为 true


为什么每次anpPager.CurrentPageIndex 都是1


private void Page_Load(object sender, System.EventArgs e)
{
BindOrgList(anpPager.CurrentPageIndex,OrderType,IsOnSearch);
}



private void anpPager_PageChanged(object sender, EventArgs e)
{
}



#region 绑定机构列表
/// <summary>
/// 绑定机构列表
/// </summary>
/// <param name="pageSize">页大小</param>
/// <param name="currrentPage">当前页</param>
/// <param name="orderType">排序类型</param>
/// <param name="isOnSearch">搜索状态</param>
protected void BindOrgList(int currentPage,int orderType,bool isOnSearch)
{
IList list;
int recordCount = 0;
string keyword="";
int searchScope=0;
if(isOnSearch) //如果在搜索状态则调用相应的搜索函数
{
if(Request["k"]!=null)
keyword = Request["k"].ToString();
if (Request["s"]!=null)
if (Request["action"]!=null)
{
lblshowDetail.HRef = "organizations02.aspx?action=search&s=" + Request["s"].ToString() +"&k=" + Request["k"].ToString();
}
searchScope = int.Parse(Request["s"].ToString());
if(searchScope==0)
list = new OrgOrgServices().SearchOrgByNameOrderByViews(anpPager.PageSize,currentPage,out recordCount,keyword);
else if(searchScope==1)
list = new OrgOrgServices().SearchOrgByManageAreaOrderByDate(anpPager.PageSize,currentPage,out recordCount,keyword);
else
list = new OrgOrgServices().SearchOrgByAreaOrderByViews(anpPager.PageSize,currentPage,out recordCount,keyword);
}
else //否则绑定所有课程信息列表
{
if (orderType==0)
{
list = new OrgOrgServices().GetAllOrgOrderByViews(anpPager.PageSize,currentPage,out recordCount);
}
else
{
list = new OrgOrgServices().GetAllOrgOrderByCreateDate(anpPager.PageSize,currentPage,out recordCount);
}
}
rptOrgInfo.DataSource = list;
rptOrgInfo.DataBind();
anpPager.RecordCount = recordCount;
}
#endregion
...全文
86 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
whjeffrey 2007-09-26
  • 打赏
  • 举报
回复
首先了解一下楼主的代码执行的顺序吧:
1.进入页面时,初始化所有成员 CurrentPageIndex = 0;
2.执行PageLoad方法,获取并显示数据。
3.点击翻页按钮(例如:下一页),执行按钮事件(btnNext_Click)对应的代码(翻页+重新绑定)。CurrentPageIndex += 1; //CurrentPageIndex = 2;
4.点击翻页按钮后页面刷新,初始化所有成员。CurrentPageIndex = 0;
5.执行PageLoad方法,获取并显示数据。CurrentPageIndex = 0;
结果:没有实现翻页效果。
--------------------------
解决方法:要保存上次的页号,可以使用ViewState对象(如:ViewState["pageIndex"])
private void Bind()
{
if(ViewState["pageIndex"] != null)//判断当前页号是否存在
{
//如果存在让控件翻到该页
anpPager.CurrentPageIndex = Convert.ToInt32(ViewState["pageIndex"]);
}
BindOrgList(anpPager.CurrentPageIndex.OrderType,IsOnSearch);
}

private void ampPager_PageChanged(object sender,EventArgs e)
{
……
ViewState["pageIndex"] = anpPager.CurrentPageIndex + 1;
……
}
seedling_lq 2007-09-26
  • 打赏
  • 举报
回复
原因-每次回刷先执行page_load,此时pagechange还没触发,因此
anpPager.CurrentPageIndex 一直是1
改为-
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}

private void Bind()
{
BindOrgList(anpPager.CurrentPageIndex, OrderType, IsOnSearch);
}

private void anpPager_PageChanged(object sender, EventArgs e)
{
Bind();
}
keystudio 2007-09-26
  • 打赏
  • 举报
回复
BindOrgList(Request.QueryString["page"]!=null?int.Parse(Request.QueryString["page"].ToString()):1,OrderType,IsOnSearch);
kkun_3yue3 2007-09-26
  • 打赏
  • 举报
回复
//为什么每次anpPager.CurrentPageIndex 都是1
根据经验表明....AspNetPager默认分页从0开始...DataList等默认分页从1开始,
印象里这两个是不统一的,说错表怪
kings2015 2007-09-26
  • 打赏
  • 举报
回复
先顶一下
exiori 2007-09-26
  • 打赏
  • 举报
回复
属性用错了。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧