Pagination in Datalist Control in Asp.net & C#





0
Date Submitted Thu. Mar. 19th, 2009 7:56 AM
Revision 1 of 1
Scripter mycodeofshailendra
Tags Control | DataList | in | Pagination
Comments 0 comments
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 + "\">&lt;&lt;</a>&nbsp;";
                    }
                    else
                    {
                        navi_string = "&lt;&lt;&nbsp;";
                    }
                    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) ? "&nbsp;<a href=\"" + url + "page=" + forward.ToString() + "\">&gt;&gt;</a>" : "&nbsp;&gt;&gt;";
                }

            }
            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;
    }
}




 

shailendra bhadange

shailendra-problemsolution.blogspot.com/
Shailendra Bhadange

Comments

There are currently no comments for this snippet.

Voting

Votes Up


Votes Down