webForumDet fria alternativet

Begränsa Datalist

7 svar · 229 visningar · startad av Nickemannen

NickemannenMedlem sedan aug. 20003 575 inlägg
#1

Hur gör man för att bara visa

de 25 första posterna med
<ASP:DataList
och sedan vet om det kommer mera så att man kan
göra en länk till nästa sida?

NETworkMedlem sedan juni 20011 732 inlägg
#2

Det får du göra manuellt, det finns ingen inbyggd pager i en datalist som i en datagrid (så kan du använda en datagrid istället, gör det!). Det finns många sätt att lösa det på... antingen hämtar du hela databasen och lägger den i ditt dataset och sedan plockar du rätt poster från den, eller så hämtar du rätt poster direkt från databasen med en sql-fråga. Använd sedan exempelvis en querystring för att hålla reda på vilken sida du befinner dig på mellan dina postbacks.

NickemannenMedlem sedan aug. 20003 575 inlägg
#3

Syftar du på DataReader då?

NETworkMedlem sedan juni 20011 732 inlägg
#4

Nja, alltså en datareader är väl mer ett sätt att läsa från exempelvis en databas (den läser väl rad för rad om jag förstått det rätt). Om du har en väldigt stor datamängd är en datareader perfekt - det är kanske inte precis lämpligt att stoppa in googles databas i ett dataset. :)

Det jag menar är att du antingen läser in rätt data direkt (exempelvis att du bara fyller de poster du ska visa i ditt dataset) och sedan slänger in hela datasetet i din datalist. Detta är lätt att göra men kräver en ny fråga till databasen för varje gång. Eller så plockar du ut alla data och väljer ut rätt poster i efterhand. Fördelen med alternativ två är att du då bara gör en hämtning från databasen oavsett hur många gånger användaren bläddrar på sidan, nackdelen är ju att du lägger en större datamängd i serverns ramminne.

Sen hur du väljer att läsa in dina data är upp till dig!

ptypeMedlem sedan juni 2002151 inlägg
#5

När ska man egentligen använda en DataList? Vad är skillnaden mot en DataGrid? (Jag har aldrig använt en DataList)

NickemannenMedlem sedan aug. 20003 575 inlägg
#6

Okej, vi säger att jag skall göra ett paging sida.

hur gör jag för att bara fylla de första 20 raderna dataset,
skall jag försöka få det begränsat i SQL-koden.

Eller hur skall jag göra för att bara fylla datasetet med de
första 20 raderna?

och sedan nästa sida, hoppa 20 poster framåt och fylla den igen

I gamla asp var det ju t.ex.

Rs.Move(post man vill flytta till)
NETworkMedlem sedan juni 20011 732 inlägg
#7

En datalist kan du layouta själv i större utsträckning (med templates) än en datagrid som ju själv genererar html-kod. En datagrid har en mängd inbyggda funktioner, exempelvis paging, det finns inte i en datalist. Du kan även använda en repeater, denna genererar ingen html alls utöver de data som hämtas och upprepas för varje rad... perfekt alltså om man vill ha full kontroll över layouten.

hur gör jag för att bara fylla de första 20 raderna dataset,
skall jag försöka få det begränsat i SQL-koden.

Exakt hur den ska se ut beror ju på vad du vill ta fram, vilka sökkriterier du ska ha. SKa du bara ha de första raderna så kan du kanske skriva

SELECT TOP 20 * FROM Tabell ORDER BY Datum

Sen kan du ju bygga vidare med exempelvis querystrings... säg att du har ?Page=2&Count=10 (page = vilken sida och count = antal poster som ska visas samtidigt) så stoppar du in dem i din sql-fråga på lämpligt sätt.

Du arbetar ungefär lika mot ett dataset (ett dataset fungerar ju precis som en databas, med den skillnaden att den ligger i datorns ramminne!). Du kan bolla med ditt dataset precis hur du vill, radera, lägga till, förändra, sortera... Exakt hur syntaxen ser ut vet jag inte på rak arm och jag har lite brottom just nu, men jag om du inte löser det själv så kollar jag upp det senare!

:)

NickemannenMedlem sedan aug. 20003 575 inlägg
#8

lungt

128 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)