Avatar billede bongo20 Nybegynder
12. april 2005 - 08:45 Der er 11 kommentarer og
2 løsninger

Response.flush i tabel

Hej!

Jeg har et problem med Response.Flush().

Jeg bruger ikke codebehind
Jeg har en tabel defineret i min html del af siden.
Denne tabel fylder jeg op i min script del, sådan her:

while (dReader.Read())
{                       
    cell = new TableCell();
    row = new TableRow();
    cell.Text = dReader.GetString(0);           
    row.Cells.Add(cell);
    tblMain.Rows.Add(row);
         
    Response.Flush();
    Thread.Sleep(10);
}
dReader.Close();

Det jeg håbede ville ske med denne kode var at jeg fik 1 række ad gangen at se, hver gang den flushede, men jeg kan vente på hele tabellen bliver renderet og så får jeg det hele smidt i hovedet 1 minut senere.

Hvad gør jeg galt?

På forhånd tak
Avatar billede burningice Nybegynder
12. april 2005 - 18:49 #1
problemet er at hele siden først bliver renderet når alt din kode er udført. Med andre ord ligger der ikke noget i din Response.OutputStream på nuværende tidspunkt.

det du skal gøre er at bruge Response.Write, istedet for at opbygge dig en ObjectModel. På den måde kan du skrive html'en ud lidt efter lidt.
Avatar billede bongo20 Nybegynder
13. april 2005 - 07:34 #2
Kan du give et eksempel på en tabel der opbygges ved brug af Response.Write ?
Avatar billede burningice Nybegynder
13. april 2005 - 08:59 #3
while (dReader.Read())

    Response.Write("<tr>");
    Response.Write("<td>"+ dReader.GetString(0) +"</td>");                 
    Response.Write("</tr>")
       
    Response.Flush();
    Thread.Sleep(10);
}
dReader.Close();

problemet med den kode er, at den skal placeres direkte imellem din <table> og </table>, ellers risikerer du at det bliver skrevet et helt forkert sted på siden.
Avatar billede bongo20 Nybegynder
13. april 2005 - 10:25 #4
altså midt imellem alt min HTML ?
Avatar billede burningice Nybegynder
13. april 2005 - 10:42 #5
:) yearh...

men, må jeg spørge hvorfor du overhovedet roder med det? hvor mange poster er der rent faktisk i din reader? hvorfor ikke bare bygge din tabel og renderer det hele på en gang?
Avatar billede bongo20 Nybegynder
13. april 2005 - 16:35 #6
fordi den bliver gigantisk,.det er bare en liste over besøg på siden. Alle besøg!

Der er et par tusinde nu, og den vokser voldsomt. Det tager temmelig lang tid at loade siden nu. Ville godt give mulighed for at se lidt med det samme...
Avatar billede burningice Nybegynder
13. april 2005 - 16:41 #7
har du overvejet noget paging?
Avatar billede bongo20 Nybegynder
14. april 2005 - 11:31 #8
ja jeg har :o)

Det ender det nok også med så...

:o)
Avatar billede burningice Nybegynder
14. april 2005 - 11:54 #9
ovenstående er jo ikke holdbart i nogen som helst henseende
Avatar billede bongo20 Nybegynder
18. april 2005 - 06:48 #10
kan du uddybe det cyberfessor?
Avatar billede burningice Nybegynder
18. april 2005 - 09:04 #11
ja, det med at skrive en række af gangen til Response.Stream og så flushe den, samtidig med at din connection til databasen forbliver åben. Der er jo ingen der gider at vente på at få en tabel med flere tusine rækker smidt i hoved. Det kan man ikke bruge til noget.
Avatar billede bongo20 Nybegynder
18. april 2005 - 10:53 #12
Det skal nu også fungerer så man slet ikke får set alle rækker, men jeg kan godt lide at have det hele på klienten ( når det er muligt ) Det går dejligt tjept derefter.

Men måske er det for voldsomt med denne..
Avatar billede burningice Nybegynder
18. april 2005 - 13:33 #13
tusind rækker er i hvert fald en hel del. Nok ikke uden grund at google f.eks. kun viser  10 hits pr side af gangen. Kan godt gå hen og blive lidt voldsomt vis den skulle vise alle 3.300.000 når man søger efter hej.

Det er det man har paging til :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester