beyondjay

 

生成repeater分页的页码,可以想datagrid一样分页。需要配合PagedDataSource 。

生成repeater分页的页码,可以想datagrid一样点击。需要配合PagedDataSource 。

public string CreatePagerLinks(PagedDataSource objPds, string BaseUrl)
  {
   int totalPageRanger = 3;//set page range is 5, means display five hyperlink for page selection
   int pageRanger = (totalPageRanger-1)/2;

   StringBuilder sbPager = new StringBuilder();

   if (!objPds.IsFirstPage)
   {
    // first page link
    sbPager.Append("<a href=\"");
    sbPager.Append(BaseUrl);
    sbPager.Append("\">|<</a> ");
    if (objPds.CurrentPageIndex != 1)
    {
     // previous page link
     sbPager.Append("<a href=\"");
     sbPager.Append(BaseUrl);
     sbPager.Append("&page=");
     sbPager.Append(objPds.CurrentPageIndex.ToString());
     sbPager.Append("\" alt=\"Previous Page\"><<</a>  ");
    }
   }


   int intLow = objPds.CurrentPageIndex + 1 - pageRanger;//pageindex + 1 = pagenumber
   int intHigh = objPds.CurrentPageIndex + 1 + pageRanger;//pageindex + 1 = pagenumber

   if (intLow < 1) intLow = 1;
   if (intHigh > objPds.PageCount) intHigh = objPds.PageCount;

   if (intHigh - intLow < totalPageRanger)
   {
    intHigh = intLow + totalPageRanger - 1;
    if (intHigh > objPds.PageCount)
     intHigh = objPds.PageCount;
   }
   if (intHigh - intLow < totalPageRanger)
   {
    intLow = intHigh - totalPageRanger + 1;
    if (intLow < 1)
     intLow = 1;
   }

   for (int x = intLow; x <= intHigh ; x++)
   {
    // numeric links
    if (x == objPds.CurrentPageIndex + 1) sbPager.Append(x.ToString() + "  ");
    else
    {
     sbPager.Append("<a href=\"");
     sbPager.Append(BaseUrl);
     sbPager.Append("&page=");
     sbPager.Append(x.ToString());
     sbPager.Append("\">");
     sbPager.Append(x.ToString());
     sbPager.Append("</a>  " );
    }
   }
   if (!objPds.IsLastPage)
   {
    if ((objPds.CurrentPageIndex + 2) != objPds.PageCount)
    {
     // next page link
     sbPager.Append("<a href=\"");
     sbPager.Append(BaseUrl);
     sbPager.Append("&page=");
     sbPager.Append(Convert.ToString(objPds.CurrentPageIndex + 2));
     sbPager.Append("\">>></a>  ");
    }
    // last page link
    sbPager.Append("<a href=\"");
    sbPager.Append(BaseUrl);
    sbPager.Append("&page=");
    sbPager.Append(objPds.PageCount.ToString());
    sbPager.Append("\">>|</a>");
   }
   // conver the final links to a string and assign to labels
   return sbPager.ToString();
  }


lilPage是一个literal,直接调用上面那个方法赋值就可以。

private void BindRepeater()
  {
   DataSet ds = new DataSet();

    ds = ......

   DataTable dt = ds.Tables[0];
   
   foreach (DataRow dr in dt.Rows)
   {
    if (dr["RewardImageUrl"]==null||dr["RewardImageUrl"].ToString().Length ==0)
     dr["RewardImageUrl"] = ConfigVar.Get("NO_PIC").ToString();
   }

   PagedDataSource pagedDataSource = new PagedDataSource();
   pagedDataSource.DataSource = ds.Tables[0].DefaultView;
   pagedDataSource.AllowPaging = true;
   pagedDataSource.PageSize = int.Parse(giftPageSize);

   //start paging
   if (GetPage() > -1)
   {
    // subtract 1 because the PagedDataSource uses a zero-based index
    int pageIndex = GetPage() - 1 ;
    // correct for a page index less than 0 or greater than the last page
    if (pageIndex < 0) pageIndex = 0;
    if (pageIndex > pagedDataSource.PageCount)
     pageIndex = pagedDataSource.PageCount - 1;
    pagedDataSource.CurrentPageIndex = pageIndex;
   }
   this.RepGiftList.DataSource = pagedDataSource;
   this.RepGiftList.DataBind();

   lilPage.Text = CreatePagerLinks(pagedDataSource, GetAbsolutUri());
  }

posted on 2008-06-17 17:04 Tony Zhou 阅读(39) 评论(0)  编辑 收藏


标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-06-17 17:16 编辑过
成果网帮您增加网站收入


相关链接:
 


导航

统计

公告

test2 9-2 14:21

与我联系

搜索

 

常用链接

留言簿

我参与的团队

我的标签

随笔分类

随笔档案

最新评论

阅读排行榜

评论排行榜