webForumDet fria alternativet

Rita ut listobjektet först när det visas

.NET

6 svar · 453 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Frågan#1

Jag har lite prestandafunderingar runt grids.

Säg att man måste ladda flera tusen objekt in i en GridView (paging är inget alternativ).

Detta kan ju ta ett litet tag när alla objekt skall ritas ut i listan, men finns det inget sätt att bara rita ut de som är synliga för användaren och först när användaren scrollar så ritas nästa objekt ut?

Har några ide'er om hur det kan göras men vill ha beprövade metoder.

Tar gärna emot tips på länkar osv.

Medlem sedan dec. 2005664 inlägg
#2

Nickemannen skrev:

Jag har lite prestandafunderingar runt grids.

Säg att man måste ladda flera tusen objekt in i en GridView (paging är inget alternativ).

Detta kan ju ta ett litet tag när alla objekt skall ritas ut i listan, men finns det inget sätt att bara rita ut de som är synliga för användaren och först när användaren scrollar så ritas nästa objekt ut?

Har några ide'er om hur det kan göras men vill ha beprövade metoder.

Tar gärna emot tips på länkar osv.

Ritas de verkligen ut innan de visas för användaren?

Medlem sedan aug. 20003 575 inlägg
#3

cok skrev:

Ritas de verkligen ut innan de visas för användaren?

Jag vet inte, men på något sätt så binds de iallfall till listan vilket tar olika tid beroende på hur många som visas.

Medlem sedan maj 20012 812 inlägg
#4

Finns det inte någon metod som heter typ BeginUpdate och EndUpdate eller något sånt på GridViewen. Har för mig att det skall finnas någon sådan metod, där man med BeginUpdate berättar att nu skall jag fylla view med massor av objekt så du kan vänta med att uppdatera den tills jag kör EndUpdate().

Om dessa metoder finns så skall det bli lite bättre iallafall, eftersom du skall slippa "se" när viewn fylls med objekt.

- M

Medlem sedan aug. 20003 575 inlägg
#5

Gladh skrev:

Finns det inte någon metod som heter typ BeginUpdate och EndUpdate eller något sånt på GridViewen. Har för mig att det skall finnas någon sådan metod, där man med BeginUpdate berättar att nu skall jag fylla view med massor av objekt så du kan vänta med att uppdatera den tills jag kör EndUpdate().

Om dessa metoder finns så skall det bli lite bättre iallafall, eftersom du skall slippa "se" när viewn fylls med objekt.

- M

Mmmm, läste lite kort igår om dom funktionerna, han inte uppfatta allt av det, men jag är inte hundra på att det är det jag är ute efter, jag är ute efter att jag kanske skall fylla en grid med 10.000 poster, där kanske 50 visas på skärmen då vill jag t.ex. att griden bara skall läsa in dom 50, sedan om det scrollas så skall den läsa in dom som krävs typ. Med läsa in menar jag nog mer ritas ut, eller jag vetinte vad det är som tar mest tid.

Medlem sedan dec. 19996 721 inlägg
#6

Red: Pratade i nattmössan (läste TreeView....)

Medlem sedan maj 20012 812 inlägg
#7

nickemannen skrev:

Mmmm, läste lite kort igår om dom funktionerna, han inte uppfatta allt av det, men jag är inte hundra på att det är det jag är ute efter, jag är ute efter att jag kanske skall fylla en grid med 10.000 poster, där kanske 50 visas på skärmen då vill jag t.ex. att griden bara skall läsa in dom 50, sedan om det scrollas så skall den läsa in dom som krävs typ. Med läsa in menar jag nog mer ritas ut, eller jag vetinte vad det är som tar mest tid.

Det låter som du är ute efter någon "paging" funktion. Det tror jag inte du kan fixa med standardkontrollerna, men det borde ju inte vara omöjligt att skriva den själv.

1. Skapa en egen Grid kontroll som ärver från Grid.
2. Lägg till ett objekt som kan hålla din lista med alla 10000 objekt.
3. Välja att plocka ut de 50 första i listan och lägg till en annan lista.
4. Bind den sista listan till basgridens datasource
5. När du scrollat lite neråt (det måste finnas något event som du kan lyssna på här, annars är det kört :) ) så tar du typ 10 objekt från din första lista och addad dessa till din andra lista (som är bunden till gridens datasource).
6. Gör en refresh på din basgrid (om det behövs).

Teoretiskt bör det fungerar, om det fungerar praktiskt och eventet finns har jag ingen anning om, testa och se om du får ut något av det.

- M

254 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)