Datalist Paging (Page No. Wise)
Author: Mansi Shah
Rating:
Visits: 2919
Discuss in Newsgroups
Page: 
As datalist does not support paging like gridview. You may require to use paging with datalist. Here is code which will help you to connect paging with your datalist, if your datalist contains large records.
Don't forget to include:
using System.Drawing;
public partial class DataList_Paging : System.Web.UI.Page
{
clsProduct Objproduct = null; // Class file used to get data from Product database
static int CategoryID = 0; // Product Category, according to that product datalist will be binded.
static int PageSize = 10; // "Page[ddlPage]" Datalist pageSize
static int productPageSize = 5; // "Product[ddlProduct]" Datalist pageSize
static int totalRecords = 0, totalPages = 0, add = 0;
int startIndex = 0, endIndex = 0; // To set Starting Page and End Page of the Datalist "[ddlPages]" from "totalPages"
static ArrayList list = new ArrayList(); // To store total no. of pages.
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
list.Clear();
SqlConnection conn = new SqlConnection("data source=192.16.0.13;initial catalog=xyz;user id=sa;password=sa;persist security info=True;packet size=4096");
CategoryID = 56;
BindProduct(CategoryID);
ViewState["LastSelectedPage"] = 1; // Stores the Last Page Clicked in "ddlPages"
ViewState["Process"] = "Next"; // Stores Process, can be "Next" or "Previous" according to "lbtnNext" or "lbtnPrev"
Paging(); // Sets starting Pages to be displayed in "ddlPages" datalist
}
}
#region Paging //SETS THE STARTING ddlPages [ON PAGE LOAD]
public void Paging()
{
for (int i = 0; i <= totalPages; i++)
{
if (totalPages <= PageSize) // If total pages are less than the page size of "ddlPages"
{
startIndex = 1;
endIndex = totalPages;
PageNoVisibility(startIndex, endIndex); // Sets the color of the selected page and binds "ddlProduct" datalist
break;
}
if (i == 0)
{
startIndex = 1;
if (totalPages <= PageSize)
endIndex = totalPages;
else
endIndex = PageSize;
PageNoVisibility(startIndex, endIndex); // Sets the color of the selected page and binds "ddlProduct" datalist
break;
}
}
}
#endregion
#region Page Datalist Binding //BINDS PAGE DATA LIST FOR PARTICULAR PAGE SIZE DEFINED.
//THIS FUNCTION WILL BE CALLED ON PAGE LOAD AND ALSO
//WHEN THE WHOLE SET OF THE DATASET[ddlPages] CHANGES,
//MEAN ON THE ON NEXT CLICK WHEN LAST PAGE IS SELECTED OR
//ON PREVIOUS CLICK WHEN FIRST PAGE IS SELECTED.
public void PageNoVisibility(int start, int end)
{
ArrayList sublist = new ArrayList();
if (start >= 1 && start <= totalPages) // IF THERE ARE ANY PAGES TO BE BIND IN "ddlPages"
{
ViewState["FirstInPageSize"] = start; // The first Page which is dispalyed in “ddlPages”
if (start <= totalPages)
{
//GETS PAGES TO BE DISPLAYED FROM THE TOTAL NO. OF PAGES IN ddlPages [ARRAY LIST "sublist"]
for (int l = 0; l < list.Count; l++)
{
if (Convert.ToInt32(list[l]) >= start && Convert.ToInt32(list[l]) <= end)
{
sublist.Add(list[l]);
ViewState["LastInPageSize"] = list[l]; // The last page which is displayed in “ddlPages”
}
}
ddlPages.DataSource = sublist;
ddlPages.DataBind();
// WHEN NEXT BUTTON HAS BEEN CLICKED.
if (ViewState["Process"].ToString() == "Next")
{
if (ddlPages.Items.Count >= 1)
{
LinkButton lbtn1 = (LinkButton)ddlPages.Items[0].FindControl("lbtnPage");
lbtn1.ForeColor = Color.Black;
ViewState["LastSelectedPage"] = lbtn1.Text;
}
else
lbtnNext.Visible = false;
}
//WHEN PREVIOUS BUTTON HAS BEEN CLICKED.
else if (ViewState["Process"].ToString() == "Prev")
{
LinkButton lbtn1 = new LinkButton();
if (end > ddlPages.Items.Count)
lbtn1 = (LinkButton)ddlPages.Items[PageSize - 1].FindControl("lbtnPage");
else
lbtn1 = (LinkButton)ddlPages.Items[end - 1].FindControl("lbtnPage");
ViewState["LastSelectedPage"] = lbtn1.Text;
lbtn1.ForeColor = Color.Black;
}
sublist.Clear();
if (start == totalPages)
{
lbtnNext.Visible = false;
lbtnPrev.Visible = false;
}
}
else
lbtnNext.Visible = false;
// SETS VISIBILITY OF NEXT AND PREVIOUS BUTTONS
if (ViewState["LastSelectedPage"] != null && Convert.ToInt32(ViewState["LastSelectedPage"]) == totalPages)
lbtnNext.Visible = false;
else if (ViewState["LastSelectedPage"] != null && ViewState["LastSelectedPage"].ToString() == "1")
lbtnPrev.Visible = false;
// SETS STARTINDEX TO BIND THE "ddlProducts" DATALIST.
startIndex = (Convert.ToInt32(ViewState["LastSelectedPage"]) - 1) * productPageSize + 1;
endIndex = startIndex + productPageSize - 1;
BindProducts(startIndex, productPageSize, CategoryID);
}
else // IF NO PAGES
{
if (ViewState["Process"].ToString() == "Next")
lbtnNext.Visible = false;
else if(ViewState["Process"].ToString()=="Prev")
lbtnPrev.Visible = false;
}
}
#endregion
#region BindProdcuts //BINDS ddlProdcuts ACCORDING TO START AND PAGESIZE PARAMETERS, ON PAGE BUTTON CLICK OR NEXT,PREVIOUS CLICK.
public void BindProducts(int startIndex, int productPageSize, int CagegoryID)
{
Objproduct = new clsProduct();
DataSet DsProduct = new DataSet();
DsProduct = Objproduct.GetPagingforPhase(startIndex -1, productPageSize, CategoryID);
if (DsProduct != null && DsProduct.Tables[0].Rows.Count > 0)
{
ddlProduct.DataSource = DsProduct.Tables[0].DefaultView;
ViewState["DataTable"] = DsProduct.Tables[0];
ddlProduct.DataBind();
}
}
#endregion
// “ddlPages” contains link button “lbtnPage” in Item Template
protected void lbtnPage_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "Page")
{
startIndex = ((Convert.ToInt32(e.CommandArgument)) - 1) * productPageSize + 1;
endIndex = startIndex + PageSize - 1;
BindProducts(startIndex, productPageSize, CategoryID);
}
}
protected void lbtnNext_Click(object sender, EventArgs e)
{
ViewState["Process"] = "Next";
lbtnPrev.Visible = true;
string s = ViewState["LastSelectedPage"].ToString();
string s1 = ViewState["LastInPageSize"].ToString();
if (ViewState["LastSelectedPage"].ToString() != ViewState["LastInPageSize"].ToString())
{
foreach (DataListItem di in ddlPages.Items)
{
LinkButton lbtn = (LinkButton)di.FindControl("lbtnPage");
if (Convert.ToInt32(lbtn.Text) > Convert.ToInt32(ViewState["LastSelectedPage"]))
{
lbtn.ForeColor = Color.Black;
ViewState["LastSelectedPage"] = lbtn.Text;
startIndex = (Convert.ToInt32(lbtn.Text) - 1) * productPageSize + 1;
endIndex = startIndex + productPageSize - 1;
BindProducts(startIndex, productPageSize, CategoryID);
break;
}
else
lbtn.ForeColor = Color.Blue;
}
}
else
PageNoVisibility((Convert.ToInt32(ViewState["LastInPageSize"])) + 1, (Convert.ToInt32(ViewState["LastInPageSize"])) + PageSize);
if (ViewState["LastSelectedPage"] != null && Convert.ToInt32(ViewState["LastSelectedPage"]) == totalPages)
lbtnNext.Visible = false;
else if (ViewState["LastSelectedPage"] != null && ViewState["LastSelectedPage"].ToString() == "1")
lbtnPrev.Visible = false;
}
protected void lbtnPrev_Click(object sender, EventArgs e)
{
ViewState["Process"] = "Prev";
lbtnNext.Visible = true;
string lastselectedpage = ViewState["LastSelectedPage"].ToString();
string firstinpagesize = ViewState["FirstInPageSize"].ToString();
if (ViewState["LastSelectedPage"].ToString() != ViewState["FirstInPageSize"].ToString())
{
foreach (DataListItem di in ddlPages.Items)
{
LinkButton lbtn = (LinkButton)di.FindControl("lbtnPage");
lbtn.ForeColor = Color.Blue;
}
foreach (DataListItem di in ddlPages.Items)
{
LinkButton lbtn = (LinkButton)di.FindControl("lbtnPage");
if (Convert.ToInt32(lbtn.Text) < Convert.ToInt32(ViewState["LastSelectedPage"]))
{
if (Convert.ToInt32(lbtn.Text) == Convert.ToInt32(ViewState["LastSelectedPage"]) - 1)
{
lbtn.ForeColor = Color.Black;
ViewState["LastSelectedPage"] = lbtn.Text;
startIndex = (Convert.ToInt32(lbtn.Text) - 1) * productPageSize + 1;
endIndex = startIndex + productPageSize - 1;
BindProducts(startIndex, productPageSize, CategoryID);
break;
}
}
}
}
else
PageNoVisibility(Convert.ToInt32(ViewState["FirstInPageSize"]) - PageSize, (Convert.ToInt32(ViewState["FirstInPageSize"])) - 1);
if (ViewState["LastSelectedPage"] != null && Convert.ToInt32(ViewState["LastSelectedPage"]) == totalPages)
lbtnNext.Visible = false;
else if (ViewState["LastSelectedPage"] != null && ViewState["LastSelectedPage"].ToString() == "1")
lbtnPrev.Visible = false;
}
Database related functions you can find on second page..
Visitor Comments