[ASP.NET] content updaten tijdens runtime van code*

Pagina: 1
Acties:

  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
Hey,

Ik ben een pagina aan het maken die regels uit een .csv bestand omzet naar een MySql db.
Geen probleem allemaal en per regels is het me ook al gelukt om het percentage van het geheel te berekenen.
Echter zou ik graag bij elke record het nummer laten zijn en een "progressbar" hebben.
Nu heb ik op Google wel wat controls gevonden maar ik denk dat het makkelijker kan.

Ik heb gewoon een image (.gif 1px * 10px) met als begin width="0".
In de loop die dan de regels loopt tel ik bij de width het percentage steeds op;
code:
1
2
 'Progressbar bijwerken.
progressBar.Width = progressBar.Width + ((Line.Length / sr.BaseStream.Length) * 100)

sr = de StreamReader.

Het werkt gewoon, maar ik krijg pas na het laden van de pagina de balk op 100% te zien.

Voor de recordnummers heb ik al vanalles geprobeerd;
- Response.Write(nummer)
Response.Flush()
Geeft zoals verwacht een hele lijst van nummers, maar ik wil dat bij elke loop het vorige nummer weer overschrijven word dus maak ik een label en doe ik;
code:
1
2
Response.Write("<script language='text/javascript'>document.GetElementById['CurrentNr'].innerTEXT = '" & Nr & "';</script>")
Response.Flush()

Maar dit werkt al helemaal niet. Op deze manier zou ik ook bij de balk het aantal procenten kunnen weergeven.
Iemand een goed idee?

[ Voor 10% gewijzigd door whoami op 11-05-2006 14:45 ]


  • Daos
  • Registratie: Oktober 2004
  • Niet online
Waarschijnlijk komt het omdat je 2 integers deelt. Het resultaat is ook een integer (meestal 0).

Het moet waarschijnlijk zo worden:
(100 * Line.Length / sr.BaseStream.Length)

[edit]
Bij nader inzien denk ik het toch niet. Je zou met meerdere lines dan nooit op 100% hebben kunnen komen.

[edit2]
Ik weet nu zeker dat ik fout zat met mijn eerste reactie. Een integer deling gaat in vb.net namelijk met een \ in plaats van een /.

[ Voor 45% gewijzigd door Daos op 11-05-2006 14:21 ]


  • cowgirl
  • Registratie: November 2000
  • Laatst online: 18-12-2025
Het gaat om een webpagina? En wanneer in de page lifecycle wordt dan die file ingelezen? Vergeet niet dat in web de pagina pas naar de client gestuurd wordt als deze helemaal klaar is, en dus de file helemaal is ingelezen.

  • ThunderNet
  • Registratie: Juni 2004
  • Laatst online: 18:14

ThunderNet

Flits!

Waarom gebruik je niet de gewone progressbar control die je beschikbaar hebt? Lijkt me iig veel makkelijker? :)

Heb je liever vooraf, of achteraf, dat ik zeg dat ik geen flauw idee heb wat ik doe?


  • whoami
  • Registratie: December 2000
  • Laatst online: 16:46
Dat je progressbar pas op het einde geupdated wordt, is waarschijnlijk het gevolg dat je cpu volledig bezet is door die taak die hij moet uitvoeren, en geen tijd heeft om je progressbar te updaten; of dat je windows controls geen tijd hebben om up te daten.
Oplossing: threading gebruiken. (Je taak op een andere thread uitvoeren; kijk eens naar de backgroundworker).
(Ofwel, een dirty oplossing, Application.DoEvents gebruiken)

https://fgheysels.github.io/


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-02 14:52

gorgi_19

Kruimeltjes zijn weer op :9

ThunderNet schreef op donderdag 11 mei 2006 @ 14:18:
Waarom gebruik je niet de gewone progressbar control die je beschikbaar hebt? Lijkt me iig veel makkelijker? :)
Omdat aan de code te zijn er gebruik wordt gemaakt van ASP.Net :P
cowgirl schreef op donderdag 11 mei 2006 @ 14:16:
Het gaat om een webpagina? En wanneer in de page lifecycle wordt dan die file ingelezen? Vergeet niet dat in web de pagina pas naar de client gestuurd wordt als deze helemaal klaar is, en dus de file helemaal is ingelezen.
Dat kan je met Response.Buffer wijzigen :)

[ Voor 40% gewijzigd door gorgi_19 op 11-05-2006 14:26 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
Is er niet gewoon een manier om tijdens het loopen in het script de width van de img te updaten?
Nu krijg ik gewoon aan het einde 100% width. en mis ik de tussenstappen.

Response.Buffer = False geld alleen voor Response.Write en niet voor het updaten van render-elementen.
Kan natuurlijk wel met Response.Write een table opbouwen, maar dat lijkt me te omslachtig.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-02 14:52

gorgi_19

Kruimeltjes zijn weer op :9

Predje schreef op donderdag 11 mei 2006 @ 14:44:
Is er niet gewoon een manier om tijdens het loopen in het script de width van de img te updaten?
Nu krijg ik gewoon aan het einde 100% width. en mis ik de tussenstappen.

Response.Buffer = False geld alleen voor Response.Write en niet voor het updaten van render-elementen.
Kan natuurlijk wel met Response.Write een table opbouwen, maar dat lijkt me te omslachtig.
Dan moet je met iets als Ajax aan de gang :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Predje
  • Registratie: December 2002
  • Laatst online: 03-03-2025
Wordt javascript code eigelijk uitgevoerd als ik deze maak met Response.Write?

Ik zit trouwens gewoon Response.Buffer op False en dan om de 5 procent laat ik Response.Write("<img scr='progressImage.gif'>") wegschrijven, het zal mij wel goed zijn ;) Geen zin om te moeilijk te doen.

Als dat nu werkt met javascript dan update ik gewoon steeds de innerHTML van een div met een nieuw nummer.
Pagina: 1