Search This Blog

Friday, October 31, 2008

Pagination in DataList

Generally DataList Control does not support pagination by its default properties..But if you need it you have to do it by mannual coding.

Add
PagedDataSource pds = new PagedDataSource();
at the top of your Page_Load(object sender, EventArgs e) event

Now Add these methods in your code behind page


public void BindDatalist() //Get Data and Set Page Size ,Page Index
{

//dlstFeatureAlbum.DataSource = FeatureAlbum.GetAlbums();
// dlstFeatureAlbum.DataBind();

DataTable dt = new DataTable();

dt = FeatureAlbum.GetAlbums();
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = 24;//Convert.ToInt16(ddlPageSize.SelectedValue);
if (dt.Rows.Count <= 24)
{
divPageIndex.Visible = false;
}
if (dt.Rows.Count == 0)
{
lblEmptyList.Visible = true;
}
pds.CurrentPageIndex = CurrentPage;
lnkbtnNext.Enabled = !pds.IsLastPage;
lnkbtnPrevious.Enabled = !pds.IsFirstPage;

dlstFeatureAlbum.DataSource = pds;
dlstFeatureAlbum.DataBind();

doPaging();
}


//Code for Pagination

public int CurrentPage //this method is for storing the current page index
//to view state
{

get
{
if (this.ViewState["CurrentPage"] == null)
return 0;
else
return Convert.ToInt16(this.ViewState["CurrentPage"].ToString());
}

set
{
this.ViewState["CurrentPage"] = value;
}

}

private void doPaging() //Calculating total results and divide them into pages
{
DataTable dt = new DataTable();
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageText");
for (int i = 0; i < pds.PageCount; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i + 1;
dt.Rows.Add(dr);
}

dlPaging.DataSource = dt;
dlPaging.DataBind();
}

protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName.Equals("lnkbtnPaging"))
{
CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
BindDatalist();
}
}

protected void lnkbtnPrevious_Click(object sender, EventArgs e) //navigation
{
CurrentPage -= 1;
BindDatalist();
}

protected void lnkbtnNext_Click(object sender, EventArgs e) //navigation
{
CurrentPage += 1;
BindDatalist();
}

protected void dlPaging_ItemDataBound(object sender, DataListItemEventArgs e)
{
LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
{
lnkbtnPage.Enabled = false;
lnkbtnPage.Font.Bold = true;
}
}

protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
CurrentPage = 0;
BindDatalist();
}

//End

No comments: