Thursday, September 25, 2008

DataList Custom Paging



.cs


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.Sql;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{
PagedDataSource pds = new PagedDataSource();
DataTable dt = new DataTable();
static int lastPage = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//lastPage = 0;
ddlPageSize.Items.Add("5");
ddlPageSize.Items.Add("10");
ddlPageSize.Items.Add("15");
BindGrid();
}
}
private void BindGrid()
{
string connectionString = @"Data Source =CB-36A\SQLEXPRESS ;Initial Catalog=master;Integrated Security=True";
SqlConnection myConnection = new SqlConnection(connectionString);
SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Country", myConnection);
DataTable dt = new DataTable();
da.Fill(dt);
pds.DataSource = dt.DefaultView;
pds.AllowPaging = true;
pds.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
pds.CurrentPageIndex = CurrentPage;
lnkbtnNext.Enabled = !pds.IsLastPage;
lnkbtnPrevious.Enabled = !pds.IsFirstPage;
lnkbtnFirst.Enabled = !pds.IsFirstPage;
lnkbtnLast.Enabled = !pds.IsLastPage;
Countrydlst.DataSource = pds;
Countrydlst.DataBind();
doPaging();
}
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
doPaging();
}
public int CurrentPage
{
get
{
if (this.ViewState["CurrentPage"] == null)
return 0;
else
return Convert.ToInt16(this.ViewState["CurrentPage"].ToString());
}
set
{
this.ViewState["CurrentPage"] = value;
}

}
private void doPaging()
{
DataTable dt = new DataTable();
dt.Columns.Add("PageIndex");
dt.Columns.Add("PageText");
for (int i = 0; i < pds.PageCount; i++)
{
DataRow dr = dt.NewRow();
dr[0] = i;
dr[1] = i + 1;
dt.Rows.Add(dr);
}
lastPage = int.Parse(dt.Rows[dt.Rows.Count - 1][0].ToString());
Pagingdlst.DataSource = dt;
Pagingdlst.DataBind();
}
protected void Pagingdlst_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName.Equals("lnkbtnPaging"))
{
CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
BindGrid();
}
}
protected void lnkbtnPrevious_Click(object sender, EventArgs e)
{
CurrentPage -= 1;
BindGrid();
}
protected void lnkbtnNext_Click(object sender, EventArgs e)
{
CurrentPage += 1;
BindGrid();
}
protected void Pagingdlst_SelectedIndexChanged(object sender, EventArgs e)
{
CurrentPage = 0;
BindGrid();
}
protected void Pagingdlst_ItemDataBound(object sender, DataListItemEventArgs e)
{
LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
{
lnkbtnPage.Enabled = false;
lnkbtnPage.Font.Bold = true;
}
}
protected void lnkbtnFirst_Click(object sender, EventArgs e)
{
CurrentPage = 0;
BindGrid();
}
protected void lnkbtnLast_Click(object sender, EventArgs e)
{
CurrentPage = lastPage;
BindGrid();
}
}

No comments: