---
title: "problem med paging i datalist"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/112895-problem-med-paging-i-datalist"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Mc Fetto"
published: "2004-10-04T10:54:25.000Z"
updated: "2004-10-07T08:51:25.000Z"
replies: 7
views: 398
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/112895-problem-med-paging-i-datalist"
---

# problem med paging i datalist

## #1 — Mc Fetto, 2004-10-04T10:54Z

Jag har en datalist som jag försöker koppla en pagingfunktion till.. Jag har denna funktion för att skapa detta och den kallas på, i Page_Load och under de två linkbuttons jag har.

```
		public void ItemsGet() 
		{
			PagedDataSource objPds = new PagedDataSource();
			DataSet dataset = new DataSet();
			dataset = db.getCategorys();
			objPds.AllowPaging = true;
			objPds.DataSource = dataset.Tables[0].DefaultView;
			objPds.PageSize = 3;

			objPds.CurrentPageIndex = CurrentPage; 
			
			// Disable Prev or Next buttons if necessary
			cmdPrev.Enabled = !objPds.IsFirstPage;
			cmdNext.Enabled = !objPds.IsLastPage;
			DataList1.DataSource = objPds;
			DataList1.DataBind();
		}
```

När man klickar på linkbuttons för pagingen så körs följande:

```
		public void cmdPrev_Click(object sender, System.EventArgs e)
		{
			CurrentPage -= 1;
			ItemsGet();		
		}
```

Eller en annan metod som räknar upp CurrentPage...

```
		public int CurrentPage
		{
			get
			{
				// look for current page in ViewState
				object o = this.ViewState["_CurrentPage"];
				if (o == null)
					return 0;	// default to showing the first page
				else
					return (int) o;
			}

			set
			{
				this.ViewState["_CurrentPage"] = value;
			}
		}
```

Den första sidan visas, men när jag klickar på nästa (linkbutton) så blir listan tom.. :( (ja, där finns mer data i dataset:et)

Permalänk: https://www.webforum.nu/p/112895

## #2 — Mc Fetto, 2004-10-04T12:22Z

hm, CurrentPage har värdet 0 första gången men när jag klickar och den (enligt mig ska räknas upp) så blir värdet två (hade endast 6 tupler innan och lade till en och då visas den sista).

Permalänk: https://www.webforum.nu/p/1451794

## #3 — jazzil, 2004-10-05T15:40Z

```
DataSet DS = new DataSet();
DS.ReadXml(file);
		
PagedDataSource objPds = new PagedDataSource();
objPds.DataSource = DS.Tables[0].DefaultView;
objPds.AllowPaging = true;
objPds.PageSize = 6;
		
if (Request.QueryString["Page"] != null)
{CurPage=Convert.ToInt32(Request.QueryString["Page"]);}
else{ CurPage=1; }

objPds.CurrentPageIndex = CurPage-1;
if (!objPds.IsFirstPage){lnkPrev.NavigateUrl=Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage-1); }
else{ lnkPrev.Text = ""; }
if (!objPds.IsLastPage){lnkNext.NavigateUrl=Request.CurrentExecutionFilePath+ "?Page=" + Convert.ToString(CurPage+1); }
else{ lnkNext.Text = "";}
		
dg.DataSource = objPds;
dg.DataBind(); 
CurrentPage.Text = CurPage.ToString() + "/" + objPds.PageCount.ToString() + "(" +objPds.DataSourceCount.ToString() + ")";
```

Så ser min ut och den funkar skitbra. Det enda jag kan se som du har annorlunda är if satserna och ordningen.

OBS!  dg är en repeater, CurrentPage, lnkNext och lnkPrev är labels.

Permalänk: https://www.webforum.nu/p/1452588

## #4 — Nöff, 2004-10-05T18:21Z

Ni försöker verkligen göra allt så svårt som möjligt. Är det nån slags dygd i att krångla till allt? hä hä hä :e 

1\. i page_load isPostBack==false, lägg upp hela datatable i en cache såhär:

```
SqlDataAdapter theAdapter=new SqlDataAdapter("SELECT * FROM tabellen WHERE nånting","din connectionstring");
DataTable theTable=new DataTable();
theAdapter.Fill(theTable);
DataGrid1.DataSource=theTable;
DataGrid1.DataBind();
Cache["tabellen"]=theTable;
```

2\. vid händelsen page_indexchanged anropar ni följande:

```
DataGrid1.DataSource=(DataTable)Cache["tabellen"];
DataGrid1.CurrentPageIndex=e.NewPageIndex;
DataGrid1.DataBind();
```

Mer än så behöver man inte skriva. Och att "rebinda" DataGrid:et vid varje newpage sliter på databasen vilket resulterar i en dödlig overhead, tänk om ni har ett par miljoner rader i databasen?? va va va?? §e . Lägg tabellen i cachen istället som jag, så blir det bara 1 SELECT oavsett hur många gånger surfaren bläddrar, eftersom ni vet att surfaren kommer klicka igenom pageindex i snabb takt.

Permalänk: https://www.webforum.nu/p/1452664

## #5 — Mc Fetto, 2004-10-05T18:24Z

tack jazzil, ska ta en titt på din kod snarast :bire
Nöff, det rör sig om en datalist nu och inte en datagrid, du du du  :e

Permalänk: https://www.webforum.nu/p/1452665

## #6 — Nöff, 2004-10-05T18:30Z

Använd DataGrid:s istället, vill du bygga egna ItemTemplates går det bra där också. :p

Permalänk: https://www.webforum.nu/p/1452667

## #7 — greggan, 2004-10-05T19:03Z

jo jag tycker att det låter lättast att bara köra på datagrid.. men visst vill man vara mer avancerad än så så kan man ju skapa en egen till datagrid. ;P

Permalänk: https://www.webforum.nu/p/1452684

## #8 — jazzil, 2004-10-07T08:51Z

> **Mc Fetto skrev:**
>
> tack jazzil, ska ta en titt på din kod snarast :bire
> Nöff, det rör sig om en datalist nu och inte en datagrid, du du du  :e

De va inget ;)

Permalänk: https://www.webforum.nu/p/1453494

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/112895-problem-med-paging-i-datalist
