Thursday, August 21, 2008

Custom paging as google stylye paging

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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 BusenessLogic;
using BusenessObject;

public partial class MaheshPagingWithHelpofsanjeev : System.Web.UI.Page
{
BusenessObject.CustomPagingBo oCustomPaging = new CustomPagingBo();
int UserId = 1;
int PageSize = 1;
// static int TotalRows;
int GridCurrentPageIndex;
protected void Page_Load(object sender, EventArgs e)
{
if (ViewState["GridCurrentPageIndex"] != null && ViewState["GridCurrentPageIndex"].ToString() != "")
{
GridCurrentPageIndex = Convert.ToInt32(ViewState["GridCurrentPageIndex"]);
//LinkButton btnPrePage_Top = Page.FindControl("btnPrePage_Top") as LinkButton;
// btnPrePage_Top.Enabled = true;
}
else
{
GridCurrentPageIndex = 1;
// LinkButton btnPrePage_Top = Page.FindControl("btnPrePage_Top") as LinkButton;
// btnPrePage_Top.Enabled = false;

}
DisplayBottomPageLinks();

}

protected void DisplayBottomPageLinks()
{
if (ViewState["GridCurrentPageIndex"] != null && ViewState["GridCurrentPageIndex"].ToString() != "")
{
GridCurrentPageIndex = Convert.ToInt32(ViewState["GridCurrentPageIndex"]);
}
else
{
GridCurrentPageIndex = 1;
}

// Following code is used for the Gridview paging
Int32 count;
int showPages = 3;// 4; or 5 or 6 as you want (This is the key variable...)
//The variable showPages is used to show the no. of Pages you want to show at One time on the page..
LinkButton lnk;
Panel pnlPaging = Page.FindControl("pnlPaging") as Panel;
pnlPaging.Controls.Clear();
count = Convert.ToInt32(ViewState["count"]);
int pageSize = 1;
int totalPages = count / pageSize;
if (count % pageSize > 0)
{
totalPages += 1;
}
if (totalPages > 1)
{

for (int i = 0; i < totalPages; i++)
{
int pageNo = i + 1;

if (i != (GridCurrentPageIndex - 1))
{
if (i <= showPages)
{

if (i != showPages)
{
lnk = new LinkButton();
lnk.ID = "linkpage" + pageNo.ToString();
lnk.Text = pageNo.ToString() + " ";
lnk.CausesValidation = false;
lnk.CommandArgument = pageNo.ToString();
lnk.CommandName = "Paging_click";
lnk.Command += new CommandEventHandler(lnk_Command);
lnk.ToolTip = pageNo.ToString();
// lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);


}
if (i == showPages)
{

lnk = new LinkButton();
lnk.ID = "linkpage" + pageNo.ToString();
lnk.Text = " .. ";
lnk.CausesValidation = false;

lnk.CommandArgument = pageNo.ToString();
lnk.CommandName = "Paging_click";
lnk.Command += new CommandEventHandler(lnk_Command);
lnk.ToolTip = pageNo.ToString();
//lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);
}

}
if (GridCurrentPageIndex > showPages)
{
int x;
pnlPaging.Controls.Clear();
lnk = new LinkButton();
lnk.ID = "linkpage1";
lnk.Text = " << ";
lnk.CausesValidation = false;
lnk.CommandArgument = "1";
lnk.CommandName = "Paging_click";
lnk.ToolTip = "1";
//lnk.CssClass = "Paging";
lnk.Command += new CommandEventHandler(lnk_Command);

pnlPaging.Controls.Add(lnk);
lnk = new LinkButton();
lnk.ID = "linkpage" + (GridCurrentPageIndex - 1).ToString();
lnk.Text = " .. ";
lnk.CausesValidation = false;
lnk.CommandArgument = (GridCurrentPageIndex - 1).ToString();
lnk.CommandName = "Paging_click";
lnk.Command += new CommandEventHandler(lnk_Command);
lnk.ToolTip = (GridCurrentPageIndex - 1).ToString();
lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);

for (x = 0; x < showPages; x++)
{
if ((GridCurrentPageIndex + x) < totalPages)
{

lnk = new LinkButton();
lnk.ID = "linkpage" + (GridCurrentPageIndex + x).ToString();
lnk.Text = (GridCurrentPageIndex + x).ToString() + " ";
lnk.CausesValidation = false;
lnk.CommandArgument = (GridCurrentPageIndex + x).ToString();
lnk.CommandName = "Paging_click";
lnk.ToolTip = (GridCurrentPageIndex + x).ToString(); ;

lnk.Command += new CommandEventHandler(lnk_Command);
// lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);
}
}
if (x == showPages && (GridCurrentPageIndex + x) <= totalPages)
{

lnk = new LinkButton();
lnk.ID = "linkpage" + (GridCurrentPageIndex + x).ToString();
lnk.Text = " .. ";
lnk.CausesValidation = false;
lnk.CommandArgument = (GridCurrentPageIndex + x).ToString();
lnk.CommandName = "Paging_click";
lnk.Command += new CommandEventHandler(lnk_Command);
lnk.ToolTip = (GridCurrentPageIndex + x).ToString();
//lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);
}
}
if (i == (totalPages - 1) && (GridCurrentPageIndex != totalPages) && (totalPages > (showPages + 1)))
{

lnk = new LinkButton();
lnk.ID = "linkpage1" + totalPages.ToString();
lnk.Text = " >> ";
lnk.CausesValidation = false;
lnk.CommandArgument = totalPages.ToString();
lnk.CommandName = "Paging_click";
lnk.Command += new CommandEventHandler(lnk_Command);
lnk.ToolTip = totalPages.ToString();
//lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);
}



if ((GridCurrentPageIndex == totalPages) && (totalPages > (showPages + 1)))
{
int x;
pnlPaging.Controls.Clear();
lnk = new LinkButton();
lnk.ID = "linkpage1";
lnk.Text = " << ";
lnk.CausesValidation = false;
lnk.CommandArgument = "1";
lnk.CommandName = "Paging_click";
lnk.ToolTip = "1";
lnk.Command += new CommandEventHandler(lnk_Command);
//lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);

lnk = new LinkButton();
lnk.ID = "linkpage" + (GridCurrentPageIndex - showPages).ToString();
lnk.Text = " .. ";
lnk.CausesValidation = false;
lnk.CommandArgument = (GridCurrentPageIndex - showPages).ToString();
lnk.CommandName = "Paging_click";
lnk.Command += new CommandEventHandler(lnk_Command);
lnk.ToolTip = (GridCurrentPageIndex - showPages).ToString();
//lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);

for (x = (showPages - 1); x > 0; x--)
{

lnk = new LinkButton();
lnk.ID = "linkpage" + (GridCurrentPageIndex - x).ToString();
lnk.Text = (GridCurrentPageIndex - x).ToString() + " ";
lnk.CausesValidation = false;
lnk.CommandArgument = (GridCurrentPageIndex - x).ToString();
lnk.CommandName = "Paging_click";
lnk.Command += new CommandEventHandler(lnk_Command);
lnk.ToolTip = (GridCurrentPageIndex - x).ToString();
// lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);

}

}



}
else
{
if (i == (GridCurrentPageIndex - 1))
{
lnk = new LinkButton();
lnk.ID = "linkpage" + pageNo.ToString();
lnk.Text = pageNo.ToString() + " ";
lnk.CausesValidation = false;
lnk.ToolTip = pageNo.ToString();
//lnk.Attributes["OnClick"] = "return false;";
lnk.Enabled = false;
//lnk.ForeColor = System.Drawing.Color.Gray;
// lnk.CssClass = "Paging";
pnlPaging.Controls.Add(lnk);

}
}

}
}



}

protected void click_PreviousPage(object sender, EventArgs e)
{
GridCurrentPageIndex = GridCurrentPageIndex - 1;
Searching();
DisplayBottomPageLinks();
}
void lnk_Command(Object sender, CommandEventArgs e)
{
Panel pnlPaging = (Panel)Page.FindControl("pnlPaging");
ViewState["linkId"] = e.CommandArgument.ToString();
if (e.CommandName == "FirstPaging_click")
{
GridCurrentPageIndex = Convert.ToInt32(e.CommandArgument);
ViewState["GridCurrentPageIndex"] = GridCurrentPageIndex;
}
else if (e.CommandName == "Paging_click")
{
GridCurrentPageIndex = Convert.ToInt32(e.CommandArgument);
ViewState["GridCurrentPageIndex"] = GridCurrentPageIndex;
}
Searching();
LinkButton lnk = (LinkButton)pnlPaging.FindControl("linkpage" + ViewState["linkId"].ToString());
lnk.Enabled = false;
if (GridCurrentPageIndex == 1)
{
// LinkButton btnPrePage_Top = Page.FindControl("btnPrePage_Top") as LinkButton;
// btnPrePage_Top.Enabled = false;
}

}

protected void BtnShowUser_Click(object sender, EventArgs e)
{
Searching();
}

public void Searching()
{
ViewState["imgClick"] = "Image_Search";
oCustomPaging.Uid = UserId;
oCustomPaging.GridPageSize = PageSize;
oCustomPaging.GridCurrentPageIndex = GridCurrentPageIndex;
DisplayUser();
}
public void DisplayUser()
{
DataList1.DataSource = CustomPagingBl.GetImageData(oCustomPaging);
DataList1.DataBind();
ViewState["count"] = oCustomPaging.TotalRecords;
if (ViewState["GridCurrentPageIndex"] != null && ViewState["GridCurrentPageIndex"].ToString() != "")
{
GridCurrentPageIndex = Convert.ToInt32(ViewState["GridCurrentPageIndex"]);
}
else
{
GridCurrentPageIndex = 1;
}
DisplayBottomPageLinks();
}

#region sp used for paging
/*
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROC [dbo].[USP_DEMO_PAGING]
(
@UID INT,
@GridCurrentPageIndex INT,
@GridPageSize INT
)
AS
BEGIN

DECLARE @LastDisplayingRecordIndex int -- To store the index number of last displayed records in Grid in .NET page. For next page it will start by increment last index by 1.
DECLARE @MaxDisplayingRecordIndex int -- To store upto which index records should be display.

SET @LastDisplayingRecordIndex = @GridPageSize * (@GridCurrentPageIndex-1)
SET @MaxDisplayingRecordIndex = @GridPageSize * @GridCurrentPageIndex

-- VARIABLE DECLARATION FOR DYNAMIC QUERY PARTS TO BE USED IN PAGING

DECLARE @SelectQueryWhere varchar(500)-- Used to put the condtion of lower and higher record index
DECLARE @QueryCount varchar(max) -- Used to count the total records.

DECLARE @SelectMainQuery varchar(500) -- To store the selected column part of the SELECT statement
DECLARE @SelectMainQueryResultSet varchar(7000) -- To store the result set query with Row_Number
DECLARE @SelectWhereCreteria varchar(4000)
DECLARE @SelectJoinPart varchar(max)
DECLARE @SelectOrderByPart varchar(255)



SET @SelectQueryWhere = ') _Results WHERE RowNumber > ' + Convert(varchar,@LastDisplayingRecordIndex) + ' And RowNumber <= ' + Convert(varchar,@MaxDisplayingRecordIndex)
SET @SelectOrderByPart='' -- Please mentioned If any

SET @QueryCount = 'SELECT count(UID) from userImage' -- It Used for Counting all the Records

SET @SelectMainQuery ='SELECT ImageID,UID,USERNAME,USERIMAGE,ROW_NUMBER()over (order by ImageID) AS RowNumber from userImage'
SET @SelectJoinPart =''-- There is any Joins Please put here
SET @SelectWhereCreteria = ' where UId = '+ Convert(varchar,@UID)--Here You Can put Your Calculated Where Creteria
SET @SelectMainQueryResultSet = @SelectMainQuery + @SelectJoinPart + @SelectWhereCreteria
SET @SelectMainQueryResultSet = 'SELECT * FROM ('+ @SelectMainQueryResultSet + @SelectQueryWhere + @SelectOrderByPart
SET @QueryCount = @QueryCount + @SelectJoinPart + @SelectWhereCreteria

EXEC(@SelectMainQueryResultSet)
--PRINT @SelectMainQueryResultSet

EXEC(@QueryCount)

--PRINT @QueryCount
END





*/

#endregion sp used for paging
}

No comments: