|
|
|
Pagination in Datalist Control in Asp.net & C#
0
mycodeofshailendra
Datalist and Repeater control does not support pagination like in datagrid. We need to do separate functionality as follows.
.// for eg following is ur datalist control in aspx page
<asp:datalist id="DataList1" RepeatColumns="3"
runat="server">
<ItemTemplate>
<table border="0" cellpadding="2" cellspacing="2">
<tr>
<td><IMG style="WIDTH: 216px; HEIGHT: 118px" height=118 src='pictures/<%#DataBinder.Eval(Container.DataItem,"Image")%>' width=216>
<br />
<div style="margin-top:4px;text-align:left">
<div>
<asp:Label id="lbldesc" runat="server" >
<%#DataBinder.Eval(Container.DataItem,"Description")%>
</asp:Label>
</div>
<div>
<table>
<tr>
<td colspan="2"><b><asp:Label id="lblname" runat="server" Height="32px">
<%#DataBinder.Eval(Container.DataItem,"ProductName")%>
</asp:Label></b></td>
</tr>
<tr>
<td><asp:Label id="lblprice" runat="server" >
<%#DataBinder.Eval(Container.DataItem,"UnitPrice")%> BAHT
</asp:Label></td>
<td><a href='addtocart.aspx?productID=<%# DataBinder.Eval(Container.DataItem, "ProductID") %>'><asp:Image id="Image2" runat="server" Height="48px" Width="120px" ImageUrl="images/BUY..JPG"></asp:Image></a></td>
</tr>
</table>
</div>
</div>
</td>
</tr>
</table>
</ItemTemplate>
</asp:datalist>
// logic in .cs page
using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
cartDB db = new cartDB();
int MaxLinks = 10;
int CurrentPage = 0;
int RecordPerPage = 20;
protected void Page_Load(object sender, EventArgs e)
{
// Put user code to initialize the page here
int ProductID = 0;
if (Request.Params["ProductID"] != null)
{
ProductID = Int32.Parse(Request.Params["ProductID"]);
}
SqlConnection conn = new SqlConnection(db.ConnString);
SqlCommand cmdSelectAuthors;
SqlDataReader dtrAuthors;
DataSet Ds = new DataSet() ;
string Sql = string.Empty;
if (Request.Params["page"] != null)
{
CurrentPage = Int32.Parse(Request.Params["page"]);
}
conn.Open();
if(ProductID > 0 )
Sql = "Select * FROM Product where ProductID=" + ProductID;
// cmdSelectAuthors = new SqlCommand("Select * FROM Product where ProductID=" + ProductID, conn);
else
Sql = "Select * FROM Product ";
// cmdSelectAuthors = new SqlCommand("Select * FROM Product ", conn);
//dtrAuthors = cmdSelectAuthors.ExecuteReader();
SqlDataAdapter sAdapter = new SqlDataAdapter(Sql, conn);
sAdapter.Fill(Ds,"product");
// Ds = cmdSelectAuthors.ExecuteReader();
//this.DataList1.DataSource = dtrAuthors;
div_pagination.InnerHtml = Navigation("default.aspx?", MaxLinks, CurrentPage, RecordPerPage, Ds.Tables[0].Rows.Count, false, "");
this.DataList1.DataSource = CreateDS(Ds, CurrentPage);
this.DataList1.DataBind();
conn.Close();
// dtrAuthors.Close();
conn.Close();
}
public string Navigation(string url, int max_links, int curr_pages, int NUM_ROWS, int total_rows, bool back_forward, string css_current)
{
string separator = "|";
double d = (Convert.ToDouble(total_rows) / Convert.ToDouble(NUM_ROWS));
//double operator /(double x, double y);
int Round = Convert.ToInt32(Math.Round(d, 0, MidpointRounding.AwayFromZero));
int all_pages = Round - 1;
string navi_string = "";
int start = 0;
int end = 0;
int forward = 0;
int backward = 0;
if (back_forward == false)
{
max_links = (max_links < 2) ? 2 : max_links;
}
if (curr_pages <= all_pages && curr_pages >= 0)
{
if (curr_pages > (max_links / 2))
{
start = (curr_pages - (max_links / 2) > 0) ? curr_pages - (max_links / 2) : 1;
end = curr_pages + (max_links / 2);
if (end >= all_pages)
{
end = all_pages + 1;
start = (all_pages - (max_links - 1) > 0) ? all_pages - (max_links - 1) : 1;
}
}
else
{
start = 0;
end = (all_pages >= max_links) ? max_links : all_pages + 1;
}
if (all_pages >= 1)
{
forward = curr_pages + 1;
backward = curr_pages - 1;
if (curr_pages > 0)
{
navi_string = "<a href=\"" + url + "page=" + backward + "\"><<</a> ";
}
else
{
navi_string = "<< ";
}
if (!back_forward)
{
for (int a = start + 1; a <= end; a++)
{
int theNext = a - 1;
if (theNext != curr_pages)
{
navi_string += "<a href=\"" + url + "page=" + theNext + "\">";
navi_string += a.ToString() + "</a>";
navi_string += (theNext < (end - 1)) ? separator : "";
}
else
{
navi_string += (css_current != "") ? "<span class=\"" + css_current + "\">" + a.ToString() + "</span>" : a.ToString();
navi_string += (theNext < (end - 1)) ? separator : "";
}
}
}
navi_string += (curr_pages < all_pages) ? " <a href=\"" + url + "page=" + forward.ToString() + "\">>></a>" : " >>";
}
}
return navi_string;
}
private DataSet CreateDS(DataSet ds, int currPage)
{
int TotalRecords = ds.Tables[0].Rows.Count;
//int count = ds.Tables[1].Rows.Count;
int pageCounter = CurrentPage+1;
int count = pageCounter * RecordPerPage ;
if (count > TotalRecords)
{
count = TotalRecords;
}
int j = count - RecordPerPage;
DataSet Newds = new DataSet();
DataTable dt = new DataTable("product");
DataRow dr;
dt.Columns.Add(new DataColumn("Image", typeof(string)));
dt.Columns.Add(new DataColumn("Description", typeof(string)));
dt.Columns.Add(new DataColumn("ProductName", typeof(string)));
dt.Columns.Add(new DataColumn("UnitPrice", typeof(string)));
dt.Columns.Add(new DataColumn("ProductID", typeof(string)));
/* dt.Columns.Add(new DataColumn("totalResultsAvailable", typeof(string)));
dt.Columns.Add(new DataColumn("totalResultsAvailable", typeof(string)));
dt.Columns.Add(new DataColumn("totalResultsReturned", typeof(string)));
dt.Columns.Add(new DataColumn("firstResultPosition", typeof(string)));*/
for (int i = j; i < count; i++)
{
dr = dt.NewRow();
dr[0] = ds.Tables[0].Rows[i].ItemArray[5].ToString();
dr[1] = ds.Tables[0].Rows[i].ItemArray[2].ToString();
dr[2] = ds.Tables[0].Rows[i].ItemArray[1].ToString();
dr[3] = ds.Tables[0].Rows[i].ItemArray[4].ToString();
dr[4] = ds.Tables[0].Rows[i].ItemArray[0].ToString();
dt.Rows.Add(dr);
}
Newds.Tables.Add(dt);
return Newds;
}
}




There are currently no comments for this snippet.