How to allow paging in Repeater control in ASP.NET

How to allow paging in Repeater control in ASP.NET

I’ll show you how to make a repeater that allow paging, also I’ll make it as a web user control so anyone can just use it right away.

Steps:

1- Create a web user control using C# and rename it to RepeaterPager.

2- Add four buttons and one label:
Control Name Text

Button btnNext >
Button btnPrevious <
Button btnLastRecord >>
Button btnFirstRecord <<

3- Create property for Object Data Source:

public ObjectDataSource Ods { get; set; }

4- Create Property for Repeater Control Or DataList As you like:

public Repeater Rep { get; set; }

5- Create Property Get Current Page:

public int CurrentPage
{
  get
  {
    object obj = this.ViewState["_CurrentPage"];
    if (obj == null)
    {
    return 0;
    }
    else
    {
    return (int)obj;
    }
  }
  set
  {
  	this.ViewState["_CurrentPage"] = value;
  }
}

6- Bind Data in Repeater Control and Return number of Pages:

public int ItemsGet()
{
  PagedDataSource objPds = new PagedDataSource();
  objPds.DataSource = Ods.Select();
  int x = objPds.Count;
  objPds.AllowPaging = true;
  objPds.PageSize = 1;
  objPds.CurrentPageIndex = CurrentPage;
  if (objPds.Count > 0)
  {
    btnPrevious.Visible = true;
    btnNext.Visible = true;
    btnLastRecord.Visible = true;
    btnFirstRecord.Visible = true;
    lblCurrentPage.Visible = true;
    lblCurrentPage.Text = "Page: " + Convert.ToString(CurrentPage + 1) + " of " + Convert.ToString(objPds.PageCount);
  }
  else
  {
    btnPrevious.Visible = false;
    btnNext.Visible = false;
    btnLastRecord.Visible = false;
    btnFirstRecord.Visible = false;
    lblCurrentPage.Visible = false;
  }
  btnPrevious.Enabled = !objPds.IsFirstPage;
  btnNext.Enabled = !objPds.IsLastPage;
  btnLastRecord.Enabled = !objPds.IsLastPage;
  btnFirstRecord.Enabled = !objPds.IsFirstPage;
  Rep.DataSource = objPds;
  Rep.DataBind();
  return x;
}

7- Buttons Controls Code:

protected void btnPrevious_Click(object sender, EventArgs e)
{
  CurrentPage -= 1;
  ItemsGet();
}
protected void btnNext_Click(object sender, EventArgs e)
{
  CurrentPage += 1;
  ItemsGet();
}
protected void btnLastRecord_Click(object sender, EventArgs e)
{
  CurrentPage = ItemsGet() -1;
  ItemsGet();
}
protected void btnFirstRecord_Click(object sender, EventArgs e)
{
  CurrentPage = 0;
  ItemsGet();
}

8- in (Web User Control) Load Event call GetItems Property:

protected void Page_Load(object sender, EventArgs e)
{
	ItemsGet();
}

How To Use this Control:

1- Create ASP.Net Page
2- Add Repeater1 and ObjectDataSource1 to your page
3- in Page_load Event Put the following code:

protected void Page_Load(object sender, EventArgs e)
{
  RepeaterPager.Ods= Repeater1;
  RepeaterPager.Rep= ObjectDataSource1;
}

4- Build and Run 🙂

Share this post

Leave a Reply

Your email address will not be published. Required fields are marked *