Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Response.write parziale: uso la flush ?

    Buongiorno a tutti,
    ho un problema da sottoporvi.
    Devo visualizzare una pagina Html mooooolto lunga, in particolare nella pagina ci sono un paio di righe di intestazione e poi una lunga tabella di centinaia di record.
    Posto l aparte di codice interessante e lo spiego:
    codice:
    'Versione con 10 pezzi
    LenPorzione = Int(Len(ssHTML) / 10)
    Resto = Len(ssHTML) Mod 10
    
    For i=0 to 9
    	response.write Mid(ssHTML,LenPorzione * i+1,LenPorzione)
    	response.flush
    Next
    'visualizza i caratteri restanti dovuti al resto della divisione
    response.write Right(ssHTML,Resto)	
    
    Response.Expires = 0
    Response.end
    codice:
    'Versione con due pezzi
    LenPorzione = Int(Len(ssHTML) / 2)
    response.write Mid(ssHTML,1,LenPorzione)
    response.flush
    response.write Mid(ssHTML,LenPorzione+1)
    
    Response.Expires = 0
    Response.end
    Costruisco l'html nella mia pagina ASP e lo salvo nella variabile ssHTML, ma al momento di fare la response ci metterebbe parecchi secondi (possono essere anche 100mila caratteri), quindi pensavo di spezzare le response in diverse tranche, così almeno l'utente vede la pagina caricarsi un pò alla volta.
    Purtroppo però il codice soprastante (o anche la versione più semplice che posto di seguito) mi fa apparire le prime 3 righe dell'Html, ma poi la <table> la visualizza solo quando è completa. Eppure la rottura avviene più o meno a metà della <table>. Possibile che il browser sia così intelligente (o stupido, a seconda dei punti di vista) ?! Ho provato sia con response.buffer=true che con response.buffer=false, ma nulla cambia.
    Nel forum qualcuno sostiene che sia il browser (nel mio caso IE) ad refreshare la pagina quando gli pare, ma possibile che dobbiamo essere schiavi di queste impostazioni ?

    Grazie a tutti per l'aiuto
    Ciao
    Sem nasù per patì, patèm!

  2. #2
    Utente di HTML.it L'avatar di fero
    Registrato dal
    Dec 2000
    Messaggi
    265
    se puoi ti conviene impostare delle colonne a larghezza fissa e provare a mettere N tabelle anzichè una tabella con N righe.....

    vedi se così funziona anche se la resa grafica potrebbe non essere accettabile.....

    almeno scopri se l'html aspetta la fine della tabella x flushare..
    Fero
    Vuoi conoscere nuovi Amici?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    143
    affinchè il flush funzioni devi chiudere la tabella altrimenti si trova con una tabella appesa che non visualizza fin quando non si chiude
    Gennaro

  4. #4
    Un pò mi scoccia spezzettare la tabella in tanet tabelline, comunque provo e vi dico se e come viene.

    Per ora grazie
    Sem nasù per patì, patèm!

  5. #5
    Signore i signori, come temevo:
    il browser è così intelligente (o stupido, a seconda dei punti di vista) che attende la chiusura della tabella per visualizzarla. Infatti se anzichè una table con 1000 righe creo 1000 table, la visualizzazione progressiva funziona; purtroppo non è applicabile al mio caso (non posso avere le colonne a larghezza fissa nowrap, perchè mi creerebbe più problemi di quanti me ne risolve).
    A meno che qualcuno (anche fra un'ora un giorno un mese, io son sempre qui...) mi suggerisca qualche altra soluzione, dovrò dire all'utente di attaccarsi al tram e aspettare che la pagina gli si carichi tutta in un botto.

    Grazie a tutti
    Ciao
    Sem nasù per patì, patèm!

  6. #6
    il browser si comporta cosi' da sempre, non e' una novità. puoi provare a fissare tu la larghezza delle colonne

  7. #7
    Utente di HTML.it L'avatar di fero
    Registrato dal
    Dec 2000
    Messaggi
    265
    allora puoi fare cosi:

    mentre cicli le righe della tabella tieni un contatore....

    arrivato a 500 righe chiudi la tabella e ne apri un'altra....

    può essere una via di mezzo!
    Fero
    Vuoi conoscere nuovi Amici?

  8. #8
    Purtroppo (o per fortuna) il ciclo di creazione delle righe è dentro ad una dll che istanzio dalla pagina asp. La pagina quindi passa il comando di estrazione dati (una query sql) e il modello html delle righe che si aspetta come ritorno al metodo della dll, e riceve una stringona contenente tutta la table html. Potrei certo fare come dici, però sarebbe pur sempre una via di mezzo, che dovrei adottare solo in caso di tabelle mooooolto lunghe e dal risultato estetico discutibile.
    Insomma, non ne sono entusiasta, anche perchè non vorrei dare larghezze fisse alle colonne (gli utenti adottano diverse risoluzioni, i dati non sono sempre omogenei, la finestra la possono ridimensionare) ma senza ciò perderei l'allineamento tra le minitabelle; vedrò, perchè se l'utente proprio insiste posso fargli capire che a questo punto avere un'unica pagina con 10000 record è poco furbo, forse sarebbe meglio creare 1000 pagine da 10 record ciascuna, e così risolvo anche il problema, perchè a visualizzare 10 record ci metterebbe un micro-nano-secondo.

    Grazie a tutti
    Ciao
    Sem nasù per patì, patèm!

  9. #9
    Mi sono trovato nella stessa situazione.
    Con Firefox, a differenza di IE, le righe della tabellona vengono visualizzare ad ogni "Response.Flush".

    Quindi l'unica soluzione è quella di creare una serie di tabelle?
    "L'uomo che ha Fede è fortunato. Chi non ha Fede è una persona cui manca qualcosa nel profondo della sua esistenza. La Fede è speranza. L'uomo che abbandona questa speranza non è un uomo, è un disperato" [A. Zichichi]

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.