Friday 1 March 2013

Paging in asp.net with Data List





Place this code below the datalist
Change only Colored text

<table width="100%">
                        <tr>
                            <td align="right" class="style17">
                                <asp:LinkButton ID="lbtnFirst" runat="server" CausesValidation="false" 
                                    OnClick="lbtnFirst_Click" ForeColor="Blue">First</asp:LinkButton>
                                &nbsp;</td>
                            <td align="right" class="style15" >
                                <asp:LinkButton ID="lbtnPrevious" runat="server" CausesValidation="false" 
                                    OnClick="lbtnPrevious_Click" ForeColor="Blue">Previous</asp:LinkButton>&nbsp;&nbsp;</td>
                            <td align="center" valign="middle" class="style16">
                                <asp:DataList ID="dlPaging" runat="server" RepeatDirection="Horizontal" OnItemCommand="dlPaging_ItemCommand"
                                    OnItemDataBound="dlPaging_ItemDataBound">
                                    <ItemTemplate>
                                        <asp:LinkButton ID="lnkbtnPaging" runat="server" CommandArgument='<%# Eval("PageIndex") %>'
                                            CommandName="Paging" Text='<%# Eval("PageText") %>' ForeColor="Blue"></asp:LinkButton>
                                        &nbsp;
                                    </ItemTemplate>
                                </asp:DataList>
                            </td>
                            <td align="left" class="style18" >
                                &nbsp;&nbsp;<asp:LinkButton ID="lbtnNext" runat="server" CausesValidation="false"
                                    OnClick="lbtnNext_Click" ForeColor="Blue">Next</asp:LinkButton></td>
                            <td align="left" >
                                &nbsp;
                                <asp:LinkButton ID="lbtnLast" runat="server" CausesValidation="false" 
                                    OnClick="lbtnLast_Click" ForeColor="Blue">Last</asp:LinkButton></td>
                        </tr>
                        <tr>
                            <td colspan="5" align="center" style="height: 30px" valign="middle">
                                <asp:Label ID="lblPageInfo" runat="server" Font-Bold="False" ForeColor="Black"></asp:Label></td>
                        </tr>
                    </table>




C# code 








myclass db = new myclass();  
    #region PagedDataSource
    PagedDataSource _PageDataSource = new PagedDataSource();
    #endregion
    #region Private Properties
    private int CurrentPage
    {
        get
        {
            object objPage = ViewState["_CurrentPage"];
            int _CurrentPage = 0;
            if (objPage == null)
            {
                _CurrentPage = 0;
            }
            else
            {
                _CurrentPage = (int)objPage;
            }
            return _CurrentPage;
        }
        set { ViewState["_CurrentPage"] = value; }
    }
    private int fistIndex
    {
        get
        {

            int _FirstIndex = 0;
            if (ViewState["_FirstIndex"] == null)
            {
                _FirstIndex = 0;
            }
            else
            {
                _FirstIndex = Convert.ToInt32(ViewState["_FirstIndex"]);
            }
            return _FirstIndex;
        }
        set { ViewState["_FirstIndex"] = value; }
    }
    private int lastIndex
    {
        get
        {

            int _LastIndex = 0;
            if (ViewState["_LastIndex"] == null)
            {
                _LastIndex = 0;
            }
            else
            {
                _LastIndex = Convert.ToInt32(ViewState["_LastIndex"]);
            }
            return _LastIndex;
        }
        set { ViewState["_LastIndex"] = value; }
    }
    #endregion
    #region Private Methods
    private void BindItemsList()
    {
        string q = Session["Query"].ToString();
        DataTable dataTable = db.getdatatable(q);
        if (dataTable.Rows.Count > 0)
        {
            _PageDataSource.DataSource = dataTable.DefaultView;
            _PageDataSource.AllowPaging = true;
            _PageDataSource.PageSize = 10;
            _PageDataSource.CurrentPageIndex = CurrentPage;
            ViewState["TotalPages"] = _PageDataSource.PageCount;

            this.lblPageInfo.Text = "Page " + (CurrentPage + 1) + " of " + _PageDataSource.PageCount;
            this.lbtnPrevious.Enabled = !_PageDataSource.IsFirstPage;
            this.lbtnNext.Enabled = !_PageDataSource.IsLastPage;
            this.lbtnFirst.Enabled = !_PageDataSource.IsFirstPage;
            this.lbtnLast.Enabled = !_PageDataSource.IsLastPage;

            this.DataList1.DataSource = _PageDataSource;
            this.DataList1.DataBind();
            this.doPaging();
        }
        else
        {
            lbtnPrevious.Visible = false;
            lbtnFirst.Visible = false;
            lbtnNext.Visible = false;
            lbtnLast.Visible = false;
            lblDispaly.Text = "NO DATA FOUND";
        }
    }

    /// <summary>
    /// Binding Paging List
    /// </summary>
    private void doPaging()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("PageIndex");
        dt.Columns.Add("PageText");

        fistIndex = CurrentPage - 5;


        if (CurrentPage > 5)
        {
            lastIndex = CurrentPage + 5;
        }
        else
        {
            lastIndex = 10;
        }
        if (lastIndex > Convert.ToInt32(ViewState["TotalPages"]))
        {
            lastIndex = Convert.ToInt32(ViewState["TotalPages"]);
            fistIndex = lastIndex - 10;
        }

        if (fistIndex < 0)
        {
            fistIndex = 0;
        }

        for (int i = fistIndex; i < lastIndex; i++)
        {
            DataRow dr = dt.NewRow();
            dr[0] = i;
            dr[1] = i + 1;
            dt.Rows.Add(dr);
        }

        this.dlPaging.DataSource = dt;
        this.dlPaging.DataBind();
    }
    #endregion
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {

            //if (Request.Browser.Cookies)
            //{
            //    if (Request.Cookies["SelectionList"] != null && Request.Cookies["SelectionList"].Value != "")
            //    {
            //        string a = Request.Cookies["SelectionList"].Value;
            //        char[] sep = new char[] { ',' };
            //        string[] arr = a.Split(sep);
            //        lbl.Text = arr.Length + " Profile Selected";
            //        imgbtnLikeList.Visible = true;
            //    }
            //    else
            //    {
            //        lbl.Text = "No Profile Selected";
            //       imgbtnLikeList.Visible = false;
            //    }
            //}
            if (!IsPostBack)
            {
                this.BindItemsList();
            }
        }
        catch (Exception ex)
        {
            lblDispaly.Text = ex.Message.ToString();
            lbtnPrevious.Visible = false;
            lbtnFirst.Visible = false;
            lbtnNext.Visible = false;
            lbtnLast.Visible = false;
        }

    }
    protected void lbtnNext_Click(object sender, EventArgs e)
    {

        CurrentPage += 1;
        this.BindItemsList();

    }
    protected void lbtnPrevious_Click(object sender, EventArgs e)
    {
        CurrentPage -= 1;
        this.BindItemsList();

    }
    protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName.Equals("Paging"))
        {
            CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
            this.BindItemsList();
        }
    }
    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.Style.Add("fone-size", "14px");
            lnkbtnPage.Font.Bold = true;

        }
    }
    protected void lbtnLast_Click(object sender, EventArgs e)
    {

        CurrentPage = (Convert.ToInt32(ViewState["TotalPages"]) - 1);
        this.BindItemsList();

    }
    protected void lbtnFirst_Click(object sender, EventArgs e)
    {

        CurrentPage = 0;
        this.BindItemsList();


    }