Monday, May 9, 2011

Customize Paging in DataList Data Control

 Custom Paging In Datalist Control
CustomPaging.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:DataList ID="dtlEmp" runat="server">
            <HeaderTemplate>
                <table>
                    <tr>
                        <th>
                            ID
                        </th>
                        <th>
                            Name
                        </th>
                        <th>
                            DepID
                        </th>
                        <th>
                            Salary
                        </th>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
  <asp:Label ID="lblID" runat="server" 
Text='<%# Bind("id") %>'></asp:Label>
                    </td>
                    <td>
<asp:Label ID="lblName" runat="server" Text='<%# Bind("Name") %>'></asp:Label>
                    </td>
                    <td>
<asp:Label ID="lblDepID" runat="server" Text='<%# Bind("depid") %>'></asp:Label>
                    </td>
                    <td>
<asp:Label ID="lblSalary" runat="server" Text='<%# Bind("Salary") %>'></asp:Label>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:DataList>
        <table>
            <tr>
                <td>
<a href="Default.aspx#BookMark" id="First" onserverclick="ShowFirstPage"
runat="server">
                        <img src="firstpage.gif" alt="" />
                    </a>
                </td>
                <td>
 <a href="Default.aspx#BookMark" id="Prev" onserverclick="ShowPrevPage"
runat="server">
                        <img src="prevpage.gif" alt="" />
                    </a>
                </td>
                <td>
<a href="Default.aspx#BookMark" id="Next" onserverclick="ShowNextPage"
runat="server">
                        <img src="nextpage.gif" alt="" />
                    </a>
                </td>
                <td>
<a href="Default.aspx#BookMark" id="Last" onserverclick="ShowLastPage"
runat="server">
                        <img src="lastpage.gif" alt="" />
                    </a>
                </td>
            </tr>
        </table>
        <asp:Label ID="lblCurrentIndex" runat="server" Text="0"></asp:Label>
        <asp:Label ID="lblPagesize" runat="server" Text="5"></asp:Label>
        <asp:Label ID="lblRecordCount" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>

CustomPaging.aspx.cs
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 
{
    SqlConnection objcn;
    DataSet objDs;
    SqlDataAdapter objAd;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            BindData();
    }
    public void BindData()
    {
        string Query="select * from tblEmp";
        objcn = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"]
.ConnectionString);
            objAd = new SqlDataAdapter(Query, objcn);
            objDs = new DataSet();
        if (!IsPostBack)
        {
            objAd.Fill(objDs);
            lblRecordCount.Text=(objDs.Tables[0].Rows.Count).ToString();
            //objDs=null;
            //objDs=new DataSet();
       
        }
        objAd.Fill(objDs,Convert.ToInt32(lblCurrentIndex.Text),Convert.ToInt32
(lblPagesize.Text),"tblEmp");
        dtlEmp.DataSource = objDs.Tables["tblEmp"].DefaultView;
        dtlEmp.DataBind();

    }
    public void ShowFirstPage(object sender, EventArgs e)
    {
        lblCurrentIndex.Text = "0";
        BindData();
    }
    public void ShowPrevPage(object sender, EventArgs e)
    { 
        lblCurrentIndex.Text=((Convert.ToInt32(lblCurrentIndex.Text))-Convert.
ToInt32(lblPagesize.Text)).ToString();
        if(Convert.ToInt32(lblCurrentIndex.Text)<0)
        {
            lblCurrentIndex.Text="0";
        }
        BindData();
   
    }
    public void ShowNextPage(object sender, EventArgs e)
    {
        if (Convert.ToInt32(lblCurrentIndex.Text) + 
Convert.ToInt32(lblPagesize.Text) < Convert.ToInt32(lblRecordCount.Text))
        {
            lblCurrentIndex.Text = (Convert.ToInt32(lblCurrentIndex.Text)
+ Convert.ToInt32(lblPagesize.Text)).ToString();

        }
        BindData();
    }
    public void ShowLastPage(object sender, EventArgs e)
    {
        int Mod = Convert.ToInt32(lblRecordCount.Text) /
Convert.ToInt32(lblPagesize.Text);
        if (Mod > 0)
        {
            lblCurrentIndex.Text = (Convert.ToInt32(lblRecordCount.Text) -
Mod).ToString();

        }
        else
        { 
        lblCurrentIndex.Text=(Convert.ToInt32(lblRecordCount.Text)-
Convert.ToInt32(lblPagesize.Text)).ToString();
        }
        BindData();
   
    }

}

ASPdotNET-Example