Custome Pagination in Repeater in ASP.NET C#

Steps For Pagination in Repeater:

 (1) Create procedure:
create PROCEDURE sp_employeeRecord    
(  
@pg int,     --Current page Number
@pgSize int  --Size of page you want to display on one page
)  
AS  
BEGIN  
Create table #temp  
(  
id int identity primary key,  
Name varchar(100)  
)      
Set NoCount OFF  
Insert into #temp(Name) Select T184002 from T184  
   
declare @from int  
declare @to int  
set @to=@pg * @pgSize  
Set @from= @pg * @pgSize-@pgsize  
   
Select * from #temp where id>@from and id<=@to  
Select count(*) from #temp  
drop table #temp  
Set NoCount ON  
END

(2)Default.aspx file code

 <asp:Repeater ID="Repeater1" runat="server" ViewStateMode="Disabled">
            <HeaderTemplate>
                <table>
                    <tr>
                        <td class="Header">
                            Employee ID
                        </td>
                        <td class="Header">
                            Employee Name
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr class="tblReport">
                    <td>
                    <%#DataBinder.Eval(Container.DataItem,"id") %>
                    </td>
                    <td>
                        <%#DataBinder.Eval(Container.DataItem,"Name") %>
                    </td>
                </tr>
            </ItemTemplate>
            <SeparatorTemplate>
                <tr>
                    <td>
                        <hr />
                    </td>
                    <td>
                        <hr />
                    </td>
                </tr>
            </SeparatorTemplate>
            <AlternatingItemTemplate>
                <tr>
                    <td>
                        <%#DataBinder.Eval(Container.DataItem,"id") %>
                    </td>
                    <td>
                        <%#DataBinder.Eval(Container.DataItem, "Name")%>
                    </td>
                </tr>
            </AlternatingItemTemplate>
            <FooterTemplate>
                <tr>
                    <td>
                        Employee Record Display
                    </td>
                </tr>
                </table>
            </FooterTemplate>
        </asp:Repeater>
          <div style="width:100%; height:10px"><hr /></div>
        <div style="text-align:left; width:100%">
            <asp:LinkButton ID="lnkBtnPrev" runat="server" Font-Underline="False" OnClick="lnkBtnPrev_Click" Font-Bold="True"><< Prev </asp:LinkButton>
            <input id="txtHidden" style="width: 28px" type="hidden" value="1" runat="server" />

            <asp:LinkButton ID="lnkBtnNext" runat="server" Font-Underline="False" OnClick="lnkBtnNext_Click" Font-Bold="True">Next >></asp:LinkButton></div>


(3) Code Behind File Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;

public partial class frmRepeater : System.Web.UI.Page
{
    public static SqlConnection con = new SqlConnection("Data Source=192.168.1.106;Initial Catalog=health_delhigov;uid=sa; pwd=Password1");
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            BindGrid();
        }

    }
    private void BindGrid()
    {
        DataSet _ds = new DataSet();
        DataTable _dt = new DataTable();
        SqlCommand cmd = new SqlCommand();
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.CommandText = "sp_employeeRecord";
        cmd.Parameters.Add("@pg", SqlDbType.Int).Value = Convert.ToInt16(txtHidden.Value);
        cmd.Parameters.Add("@pgSize", SqlDbType.Int).Value = 5;
        //cmd.CommandText = "SELECT top 50 * FROM T184";
        cmd.Connection = con;
        SqlDataAdapter ad = new SqlDataAdapter();
        ad.SelectCommand = cmd;
        ad.Fill(_ds);
        Repeater1.DataSource = _ds;
        Repeater1.DataBind();

        pageno(Convert.ToInt32(_ds.Tables[1].Rows[0][0].ToString()));
        con.Close();
    }

    public void pageno(int totItems)
    {
        // Calculate total numbers of pages
        int pgCount = totItems / 5 + totItems % 5;

        // Display Next>> button
        if (pgCount - 1 > Convert.ToInt16(txtHidden.Value))
            lnkBtnNext.Visible = true;
        else
            lnkBtnNext.Visible = false;

        // Display <<Prev button
        if ((Convert.ToInt16(txtHidden.Value)) > 1)
            lnkBtnPrev.Visible = true;
        else
            lnkBtnPrev.Visible = false;
    }
    protected void lnkBtnPrev_Click(object sender, EventArgs e)
    {
        txtHidden.Value = Convert.ToString(Convert.ToInt16(txtHidden.Value) - 1);
        BindGrid();
    }

    protected void lnkBtnNext_Click(object sender, EventArgs e)
    {
        txtHidden.Value = Convert.ToString(Convert.ToInt16(txtHidden.Value) + 1);
        BindGrid();
    }


}

OUTPUT




Author

Priti Kumari

I am technical blogger.I blogs at www.c-Sharpcorner.com and https://aspdotnetmyblog.blogspot.in/.

No comments:

Post a Comment