Sunday, September 21, 2008

Custom Paging in ASP.NET with C# and SQL SERVER Stored Procedures

how to do custom paging::
------------------------------------

stored procedure::

ALTER PROCEDURE [dbo].[GetProductListBySearch1]
(
@currentpage varchar(100) = null,
@pagesize int
)

AS
SET NOCOUNT ON
declare @query varchar(4000)
declare @querycnt varchar(4000)

declare @skiprecords int
set @skiprecords=(@currentpage -1) * @pagesize

if(@skiprecords <0)
set @skiprecords=0

SELECT ROW_NUMBER() OVER (ORDER BY id desc) as id,title
FROM article

declare @totalrecords int
declare @no int
declare @pageno int

set @totalrecords= (select count(*) from article)
set @pageno=(@totalrecords / convert(varchar,@pagesize))

if((@totalrecords / convert(varchar,@pagesize))>0)
begin
set @pageno=@pageno+1
end

select @pageno as total_pages, @totalrecords
return



aspx.cs page:::
---------------------------

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 DLL;
using System.IO;
public partial class Default2 : System.Web.UI.Page
{
PagedDataSource page = new PagedDataSource();
DataTable dt=new DataTable();
int index = 0;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
getdata();
}
}

public void getdata()
{
dt = Class1.getdata();
if (dt.Rows.Count > 0)
{
page.DataSource = dt.DefaultView;
page.AllowPaging = true;
page.PageSize = 2;
page.CurrentPageIndex = index;


ArrayList array = new ArrayList();
for (int i = 0; i < page.Count; i++)
{
array.Add((i + 1).ToString());
}

rpt.DataSource = array;
rpt.DataBind();
// changecolor();
GridView1.DataSource = page;
GridView1.DataBind();
}
}


protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = GridView1.Rows[e.RowIndex];

}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
}
protected void rpt_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == "change")
{
index = Convert.ToInt32(e.CommandArgument.ToString()) - 1;
getdata();
}
}
protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (rpt.Items.Count >= 0)
{
LinkButton lnk = (LinkButton)e.Item.FindControl("lnk");

lnk.ForeColor = System.Drawing.Color.Red;
changecolor();
}
}
}
--------------------------

aspx page:::::::
------------------------------------

































<%#Container.DataItem %>


No comments: