读书人

anpnetpager Url 分页异常

发布时间: 2011-12-28 22:45:21 作者: rapoo

anpnetpager Url 分页错误
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

[解决办法]
先顶一下



[解决办法]
//为什么每次anpPager.CurrentPageIndex 都是1
根据经验表明....AspNetPager默认分页从0开始...DataList等默认分页从1开始,
印象里这两个是不统一的,说错表怪
[解决办法]
BindOrgList(Request.QueryString[ "page "]!=null?int.Parse(Request.QueryString[ "page "].ToString()):1,OrderType,IsOnSearch);

[解决办法]
原因-每次回刷先执行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();
}

[解决办法]
首先了解一下楼主的代码执行的顺序吧:
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;
……
}
[解决办法]
属性用错了。

读书人网 >asp.net

热点推荐