Repeater Paging in C# without post back (“asynchronous paging”) in Asp.net

Repeater Paging in C# without post back (“asynchronous paging”) in Asp.net

To implement paging in repeater control in .net that to without any post back i.e.asynchronously, can be occurred through the following manner.

The paging is Some thing like the below Structure.

Step 1:

In the aspx page just paste the follow code.
ScriptManager is used for asynchronous paging.

<form id=”form1″ runat=”server”>
<asp:ScriptManager ID=”MainScriptManager” runat=”server” />
<asp:UpdatePanel ID=”pnlHelloWorld” runat=”server”>
<ContentTemplate>
<div>
<asp:Repeater ID=”rptItems” runat=”server”>
<ItemTemplate>
<div>
<div>
<%# DataBinder.Eval(Container.DataItem,”Address”) %>
</div>
<div>
<%# DataBinder.Eval(Container.DataItem, “ProductCategory”)%>
</div>
<div>
<%# DataBinder.Eval(Container.DataItem, “BrandName”)%>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
</div>
<div>
<asp:LinkButton ID=”lbPrev” runat=”server” OnCommand=”lbPrev_Command”>Prev </asp:LinkButton>
<asp:Repeater ID=”rptPages” runat=”server”>
<ItemTemplate>
<div style=”float:left;padding-left:10px;”>
<asp:LinkButton ID=”btnPage” CommandName=”Page” CommandArgument=”<%#Container.DataItem %>” CssClass=”text” runat=”server”><%# Container.DataItem %>
</asp:LinkButton>
</div>
</ItemTemplate>
</asp:Repeater>
<asp:LinkButton ID=”lbNext” runat=”server” OnCommand=”lbNext_Command”>Next </asp:LinkButton>
</div>
</ContentTemplate>
</asp:UpdatePanel>
</form>

Step 2:

In the code file this needs to be used and your work is done.

public static int totalPages = 0;
public int PageNumber
{
get
{
if (ViewState[“PageNumber”] != null)
return Convert.ToInt32(ViewState[“PageNumber”]);
else
return 0;
}
set
{
ViewState[“PageNumber”] = value;
}
}

protected override void OnInit(EventArgs e)
{
base.OnInit(e);
rptPages.ItemCommand += new RepeaterCommandEventHandler(rptPages_ItemCommand);
}

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
LoadData();
}

private void LoadData()
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrings[“conTest”].ToString());
cn.Open();
SqlDataAdapter da = new SqlDataAdapter(“select BrandName,ProductCategory,Address from  Addresss”, cn); //U can use your query here
DataTable dt = new DataTable();
da.Fill(dt);
cn.Close();

PagedDataSource pgitems = new PagedDataSource();
DataView dv = new DataView(dt);
pgitems.DataSource = dv;

pgitems.AllowPaging = true;
pgitems.PageSize = 10;
pgitems.CurrentPageIndex = PageNumber;
totalPages = pgitems.PageCount – 1;

if (pgitems.PageCount > 1)
{
rptPages.Visible = true;
ArrayList pages = new ArrayList();
for (int i = 0; i < pgitems.PageCount; i++)
pages.Add((i + 1).ToString());
rptPages.DataSource = pages;
rptPages.DataBind();
}
else
rptPages.Visible = false;

rptItems.DataSource = pgitems;
rptItems.DataBind();
}

void rptPages_ItemCommand(object source, RepeaterCommandEventArgs e)
{
PageNumber = Convert.ToInt32(e.CommandArgument) – 1;
LoadData();
}

protected void lbPrev_Command(Object sender, CommandEventArgs e)
{
if (PageNumber == 0)
{
PageNumber = 0;
}
else
{
PageNumber = PageNumber – 1;
}
BindGrid(Category, filterName);
}

protected void lbNext_Command(Object sender, CommandEventArgs e)
{
if (PageNumber == totalPages)
{
PageNumber = totalPages;
}
else
{
PageNumber = PageNumber + 1;
}
BindGrid(Category, filterName);
}

4 Comments

  1. sairam

    Good Article but,
    page numbering is coming continuously……………..
    After paging 10 should come 11 but 1 should be disbale

Leave a Reply