Categories
Asp, Asp.net

DataList Paging in ASP.NET

DataList Paging in ASP.NET

In this tutorial i will explain you how to do paging on ASP.NET DATALIST component.Here i am using SQL Server as Backend.By Default Paging is not a part of DataList.You have to Implement your own function for it.When we want to add a paging feature to a DataList or Repeater control, then there is not an AllowPaging property. We used PagedDataSource to add a paging feature in DataList or Repeater controls. This is very useful info and might help you in your projects.

Design View:-

01<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
02 
03<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
04 
06<head runat="server">
07    <title></title>
08</head>
09<body>
10    <form id="form1" runat="server">
11    <div>
12    <table width="900px" align="center">
13    <tr>
14    <td>
15    <asp:DataList ID="DataList1" runat="server">
16    <HeaderTemplate>
17    <table width="900px">
18    <tr style="background-color:Blue;height:30px;color:White;font-size:14px">
19    <td width="150px">Ename</td>
20    <td width="150px">Basic</td>
21    <td width="150px">Dept No.</td>
22    <td width="150px">Job</td>
23    <td width="150px">Communication</td>
24    </tr>
25    </table>
26    </HeaderTemplate>
27    <ItemTemplate>
28    <table width="900px">
29    <tr>
30    <td width="150px"><%# Eval("ename")%></td>
31    <td width="150px"><%# Eval("basic")%></td>
32    <td width="150px"><%# Eval("deptno")%></td>
33    <td width="150px"><%# Eval("job")%></td>
34    <td width="150px"><%# Eval("comm")%></td>
35    </tr>
36    </table>
37    </ItemTemplate>
38    </asp:DataList>
39    </td>
40    </tr>
41    <tr>
42    <td>
43    <table id="tblPaging" runat="server">
44    <tr>
45    <td style="padding-right: 7px" valign="top">
46    <asp:LinkButton ID="lnkbtnPrevious" runat="server" OnClick="lnkbtnPrevious_Click">Previous</asp:LinkButton>
47    </td>
48    <td valign="top">
49    <asp:DataList ID="dlPaging" runat="server" OnItemCommand="dlPaging_ItemCommand" OnItemDataBound="dlPaging_ItemDataBound"
50    RepeatDirection="Horizontal">
51    <ItemTemplate>
52    <asp:LinkButton ID="lnkbtnPaging" runat="server" CommandArgument='<%# Eval("PageIndex") %>'
53    CommandName="lnkbtnPaging" Text='<%# Eval("PageText") %>'></asp:LinkButton>
54    </ItemTemplate>
55    </asp:DataList>
56    </td>
57    <td style="padding-left: 7px" valign="top">
58    <asp:LinkButton ID="lnkbtnNext" runat="server" OnClick="lnkbtnNext_Click">Next</asp:LinkButton>
59    </td>
60    </tr>
61    </table>
62    </td>
63    </tr>
64    </table>
65    </div>
66    </form>
67</body>
68</html>

Code View:-

001using System;
002using System.Collections.Generic;
003using System.Linq;
004using System.Web;
005using System.Web.UI;
006using System.Web.UI.WebControls;
007using System.Data;
008using System.Data.SqlClient;
009using System.Configuration;
010 
011public partial class _Default : System.Web.UI.Page
012{
013    PagedDataSource pds = new PagedDataSource();
014    protected void Page_Load(object sender, EventArgs e)
015    {
016        bindDataList();
017 
018    }
019 
020    protected void lnkbtnPrevious_Click(object sender, EventArgs e)
021    {
022        CurrentPage -= 1;
023        bindDataList();
024    }
025    protected void lnkbtnNext_Click(object sender, EventArgs e)
026    {
027        CurrentPage += 1;
028        bindDataList();
029    }
030    protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
031    {
032        if (e.CommandName.Equals("lnkbtnPaging"))
033        {
034            CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
035            bindDataList();
036        }
037    }
038    protected void dlPaging_ItemDataBound(object sender, DataListItemEventArgs e)
039    {
040        LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
041        if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
042        {
043            lnkbtnPage.Enabled = false;
044            lnkbtnPage.Font.Bold = true;
045        }
046    }
047 
048    public int CurrentPage
049    {
050        get
051        {
052            if (this.ViewState["CurrentPage"] == null)
053                return 0;
054            else
055                return Convert.ToInt16(this.ViewState["CurrentPage"].ToString());
056        }
057        set
058        {
059            this.ViewState["CurrentPage"] = value;
060        }
061    }
062    private void doPaging()
063    {
064        DataTable dt = new DataTable();
065        dt.Columns.Add("PageIndex");
066        dt.Columns.Add("PageText");
067        for (int i = 0; i < pds.PageCount; i++)
068        {
069            DataRow dr = dt.NewRow();
070            dr[0] = i;
071            dr[1] = i + 1;
072            dt.Rows.Add(dr);
073        }
074        dlPaging.DataSource = dt;
075        dlPaging.DataBind();
076    }
077 
078    void bindDataList()
079    {
080        string connn = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
081        SqlConnection con = new SqlConnection(connn);
082        con.Open();
083        string str = "select empno,ename,basic,deptno,job,comm from emp";
084        SqlCommand cmd = new SqlCommand(str, con);
085        SqlDataAdapter da = new SqlDataAdapter(cmd);
086        DataSet ds = new DataSet();
087        da.Fill(ds);
088        DataList1.DataSource = ds;
089        DataList1.DataBind();
090        pds.DataSource = ds.Tables[0].DefaultView;
091        pds.AllowPaging = true;
092      //to set the paging change the number 3 to your desired value
093        pds.PageSize = 3;
094        pds.CurrentPageIndex = CurrentPage;
095        lnkbtnNext.Enabled = !pds.IsLastPage;
096        lnkbtnPrevious.Enabled = !pds.IsFirstPage;
097        DataList1.DataSource = pds;
098        DataList1.DataBind();
099        doPaging();
100        con.Close();
101    }
102}