Paging in datalist databind control in asp.net
Always we need to implement DataList
instead of GridView for custom design (unformated view) and there is a need of
paging in DataList then what should do for paging there is lots of article in
search engine for implementing paging in dataset but they are typically complicated
to implement here is the simplest code for implemeting paging in DataList with PagedDataSource.
Paging in datalist in asp.net
The PagedDataSource class
provided by asp.net is used to provide a paging facility to a DataBound
control, such as DataList, Repeater, GridView, DetailsView, etc. Although there
is an AllowPaging property to handle paging in these Gridview and DataGrid
which internally use PagedDataSource class but not with Repeater and DataList
we have to implement it manually through PagedDataSource.
Below is the code for that
which have the functionality with Next, Previous, First and Last buttons.
PagedDataSource CS Part:
public int index {
get {
if
(ViewState["index"] == null)
return
0;
else
return
Convert.ToInt32(ViewState["index"].ToString());
}
set{
ViewState["index"]
= value;
}
}
protected void Page_Load(object
sender, EventArgs e)
{
if
(!IsPostBack)
Bind();
}
private void Bind()
{
DataTable
dt = FillData();
if (dt.Rows.Count
> 0)
{
PagedDataSource
_pageDataSource = new PagedDataSource();
_pageDataSource.DataSource = dt.DefaultView;
_pageDataSource.AllowPaging = true;
_pageDataSource.PageSize = 5;
_pageDataSource.CurrentPageIndex =
index;
ViewState["LastPage"]
=
_pageDataSource .PageCount - 1;
dlistSimilarAds.DataSource = _pageDataSource;
dlistSimilarAds.DataBind();
lnkPrev.Visible = !_pageDataSource.IsFirstPage;
lnkNext.Visible = !_pageDataSource.IsLastPage;
lnkFirst.Visible = !_ pageDataSource.IsFirstPage;
lnkLast.Visible = !_ pageDataSource.IsLastPage;
}
}
public DataTable FillData()
{
DataSet
ds = new DataSet();
//Fetch data and
fill your datatable
return
ds.Tables[0];
}
Next, Previous, First and Last button part:
protected void lnkNext_Click(object
sender, EventArgs e)
{
index += 1;
Bind();
}
protected void lnkPrev_Click(object
sender, EventArgs e)
{
index -= 1;
Bind();
}
protected void lnkFirst_Click(object
sender, EventArgs e)
{
index = 0;
Bind();
}
protected void lnkLast_Click(object
sender, EventArgs e)
{
index = Convert.ToInt32(ViewState["LastPage"]);
Bind();
}
Html Part:
<asp:DataList ID="dlistSimilarAds"
RepeatColumns="3"
RepeatDirection="Horizontal"
runat="server">
<ItemTemplate>
<%--Your data here--%>
</ItemTemplate>
</asp:DataList>
<asp:LinkButton runat="server"
OnClientClick="onNext();"
ID="lnkPrev"
Text=""
OnClick="lnkPrev_Click">
</asp:LinkButton>
<asp:LinkButton runat="server"
OnClientClick="onNext();"
ID="lnkNext"
Text=""
OnClick="lnkNext_Click">
</asp:LinkButton>
<asp:LinkButton runat="server"
OnClientClick="onNext();"
ID="lnkFirst"
Text=""
OnClick="lnkFirst_Click">
</asp:LinkButton>
<asp:LinkButton runat="server"
OnClientClick="onNext();"
ID="lnkLast"
Text=""
OnClick="lnkLast_Click">
</asp:LinkButton>