20 messaggi dal 02 febbraio 2013
Sto facendo delle prove in asp.net in vb.net

vorrei eseguire del codice javascript nel page_load, in pratica vorrei far andare all'ultima riga una textbox (simulare una chat), quando la textbox supera un determinato testo appare lo scroll laterale ma sempre in alto io vorrei che fosse sempre in basso.

ho letto un po su internet e sono arrivato a questo soluzione :
Dim jscript As New StringBuilder
jscript.Append("function myScroll() {")
jscript.Append("var x = document.getElementById(""<%=TextBox2.ClientID%>"");")
jscript.Append("var h = x.clientHeight;")
jscript.Append("x.scrollTop = h;")
jscript.Append("}")

System.Web.UI.ScriptManager.RegisterClientScriptBlock(Page, Me.GetType(), Page.ClientID, jscript .ToString , True)


ma non ne vuole sapere a funzionare, so che potrei mettere questo codice dentro l'html, ho provato e funziona, ma siccome io al page_load ci arrivo da un updatepannel non faccio il caricamento completo e quindi non va, avete idee suggerimenti? Provo da 5 giorni questa cosa e sono bloccato.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,

PaoloMontero ha scritto:

so che potrei mettere questo codice dentro l'html

Sì, va bene questa soluzione. Devi soltanto fare in modo che quel codice javascript venga richiamato al termine di ogni aggiornamento parziale, e questo lo puoi fare con il metodo add_endRequest.

Prova ad aggiungere questo blocco alla tua pagina:

<script type="text/javascript">
//la funzione pageLoad verrà chiamata da Asp.Net Ajax al primo caricamento di pagina.
function pageLoad() {
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
}
  //questa è la funzione che verrà invocata ad ogni aggiornamento parziale
function onEndRequest(sender, args) {
    //scrollo alla fine della textarea
    var x = document.getElementById("<%=TextBox2.ClientID%>");
    x.scrollTop = x.clientHeight;
}
</script>


ciao
Modificato da BrightSoul il 15 febbraio 2013 00.10 -

Enjoy learning and just keep making
1.509 messaggi dal 27 dicembre 2005
Però se usi il pageload di Javascript non penso ci sia bisogno del resto.
11.886 messaggi dal 09 febbraio 2002
Contributi
totti240282 ha scritto:
Però se usi il pageload di Javascript non penso ci sia bisogno del resto.

E' vero, hai perfettamente ragione. La funzione pageLoad già va in esecuzione ad ogni aggiornamento parziale, quindi il resto non serve.

Dunque si può semplificare così:
function pageLoad() {
    var x = document.getElementById("<%=TextBox2.ClientID%>");
    x.scrollTop = x.scrollHeight;
}


ciao
Modificato da BrightSoul il 15 febbraio 2013 21.14 -

Enjoy learning and just keep making
1.509 messaggi dal 27 dicembre 2005
E se non sbaglio cosi la funzione viene eseguita 2 volte vero ?
11.886 messaggi dal 09 febbraio 2002
Contributi
mmmh no, in "condizioni normali" va in esecuzione soltanto una volta per ogni aggiornamento parziale. Puoi verificarlo con questo breve pezzo di codice.
<script type="text/javascript">
    function pageLoad() {
        //qui, se preferisci, puoi usare anche un alert.
        console.log("pageLoad è andata in esecuzione");
    }
</script>
<asp:ScriptManager runat="server"></asp:ScriptManager>

<asp:UpdatePanel runat="server" ChildrenAsTriggers="true">
    <ContentTemplate>
        <asp:Button runat="server" Text="Aggiorna" />
    </ContentTemplate>
</asp:UpdatePanel>


Ma se a te va in esecuzione due volte, dai un esempio di codice per riprodurre il problema.

ciao

Enjoy learning and just keep making
1.509 messaggi dal 27 dicembre 2005
No io parlavo usando questo :

<script type="text/javascript">
//la funzione pageLoad verrà chiamata da Asp.Net Ajax al primo caricamento di pagina.
function pageLoad() {
  Sys.WebForms.PageRequestManager.getInstance().add_endRequest(onEndRequest);
}
11.886 messaggi dal 09 febbraio 2002
Contributi
totti240282 ha scritto:
E se non sbaglio cosi la funzione viene eseguita 2 volte vero ?

Eh si, e non solo due volte ma via via sempre di più. Se ad ogni pageLoad ri-sottoscrivo di nuovo l'evento endRequest, la funzione viene richiamata sempre una volta in più rispetto all'ultimo postback parziale.

ciao
Modificato da BrightSoul il 18 febbraio 2013 21.44 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.