Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1

    Riposizionare una pagina aspx

    Ciao a tutti,
    ho un problema di questo genere:
    Ho una pagina aspx con un Repeater con una serie di record. Per ogni record in elenco l'utente può visualizzare il dettaglio che lo porta in un'altra pagina aspx. Il mio problema è che al "back" gestito tramite una response.redirect ("elenco.aspx") vorrei che la pagina non si posizionasse all'inizio ma all'altezza dell'elemento precedentemente clickato.
    Ho provato a posizionare delle ancore ma mi pare non funzionino molto..
    In ogni elemento del Repeater ho inserito un elemento di questo tipo :

    <a name="<%# Eval("IDElemento") %>"></a>

    E al momento del back il comando nel code behind è :

    Response.Redirect("~/WebPages/ElencoOfferte.aspx#" +IDElemento);

    Qualcuno mi sa dire dove sbaglio e se ci fosse un metodo migliore di quello usato?
    Grazie

  2. #2
    Aggiungendo questa linea di codice nel web.config nella sezione page abiliti tutte le pagine
    a riposizionarsi al punto in cui erano.
    <pages maintainScrollPositionOnPostBack="true" />

    Se vuoi abilitare questa funzione solo in una specifica pagina allora nella sezione di intestazione della pagina aggiungi il seguente codice : MaintainScrollPositionOnPostback="true"

    Esempio
    <%@ Page (altre impostazioni ) MaintainScrollPositionOnPostback="true" %>

    Dovrebbe andare. Se non dovesse funzionare è solo un problema di framework utlizzato.
    Il codice che ho proposta funziona per il .net 2.0 ma le successive versioni non dovrebbero essere differenti.
    Comunque questo è l' approccio che non ti fa perdere tempo e funziona benissimo

  3. #3
    .. non mi funziona..
    ho provato a metterlo prima sulla sola pagina in cui ho il problema :


    <%@ Page Language="C#" AutoEventWireup="true" MaintainScrollPositionOnPostback="true" CodeBehind="Elenco.aspx.cs" Inherits="BOApplication.WebPages.Elenco" %>

    ma nessun cenno di miglioramento, mentre sul web config mi dà proprio un errore : sezione pages non è risconosciuta..

    La versione che uso è questa:
    Versione di Microsoft .NET Framework:2.0.50727.5446; Versione di ASP.NET:2.0.50727.5420

  4. #4
    Con il web config devi avere nel web.config questo schema
    Ho appena provato in una mia applicazione e funziona benissimo.
    L'unico mio cruccio è che forse hai una versione vecchia del framework 2.0
    Comunque prova a vedere se il tag <page> lo hai inserito sotto la sezione <system.web> come vedi nell'esempio. Li deve stare :-)


    <configuration>
    <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <pages maintainScrollPositionOnPostBack="true"></pages>
    </system.web>
    </configuration>



    Io uso il framework 3.5 e 4 , è da tanto che non uso il net2.0
    Ma comunque ricordo che funzionanva nelle applicazioni che ho fatto sotto quel framework

    Ma l'applicazione la lanci da visual stuido o è su un IIS server ?
    Prova a fare come ti ho mostrato se hai problemi fammi sapere
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  5. #5
    Ho provato prima sulla mia macchina e il risultato è :
    Messaggio di errore del parser: Elemento 'pages' non riconosciuto.

    Errore nel codice sorgente:


    Riga 29: -->
    Riga 30: <compilation debug="true">
    Riga 31: <pages maintainScrollPositionOnPostBack="true"></pages>
    Riga 32:
    Riga 33: <assemblies>

    Ho provato a metterlo sul server in produzione che credo abbia il framework aggiornato, in effetti qualcosa cambia ma non come vorrei io.
    La pagina al back si ricarica e si posiziona all'inizio del datalist e non direttamente sull'intestazione, quello che io vorrei è che si posizionasse all'altezza dell'elemento clickato che è molto più giù..

  6. #6
    mi sembra strano che inserendo le ancore non riesci ad avere il risultato cercato.
    hai controllato che il codice HTML venga generato correttamente?

  7. #7
    Nel metodo Page_Load della tua pagina prova a far inserire da un blocco <script> javascript

    Prima crei una label fittizia che usi solo per poter iniettare del codice javascript
    Poi nel fai

    codice:
    protected void Page_Load(object sender, EventArgs e)
            {
                Label1.Text = "<script>document.location = '#b2'</script>";
               
                
            }
    Dove "b2" è l'id sul quale ti vuoi posizionare al ritorno dal back
    Ricordati di inserire anche il # prima dell'id
    Prova e fammi sapere
    Sul mio blog qualche utile risorsa per JQuery, HTML5 , CSS3 , PHP , ASP.NET , WCF SERVICE REST & SOAP ed altro ancora http://zannino1973.wordpress.com

  8. #8
    ciao frank2tek,

    Premessa: a me la prima soluzione funziona!!!!!!!!!!!!!
    codice:
    Response.Redirect("pagina.aspx#ancora");

    non mi piace molto la soluzione che hai scritto (impressioine personale), solo per quanto riguarda lo stile.
    meglio fare la stessa cosa ma utilizzando ClientScript.RegisterStartupScript.

    Ad esempio farei questo:

    nella pagina che deve "rimandare" alla posizione cliccata:
    codice:
    Response.Redirect("~/WebPages/ElencoOfferte.aspx?idelem=" +IDElemento);
    nella pagina ElencoOfferte.aspx:
    codice:
    string idElem = string.Empty;
    if (Request.QueryString["idelem"] != null)
        idElem = Request.QueryString["idelem"].ToString();
    
    if (!string.IsNullOrEmpty(idElem))
        ClientScript.RegisterStartupScript(this.GetType(),
                    "riposiziona", 
                    string.Format("document.location='#{0};", idElem), 
                    true);
    in questo modo non solo il codice è più pulito, ma lo script viene messo alla fine della pagina, quindi si è sicuri che il DOM è tutto caricato, compresa l'ancora.

    ciao

  9. #9
    non capisco.. deve esserci qualcosa di sbagliato in quello che faccio...
    allora sulla load della pagina di elenco ho scritto:


    Label17.Text = "<script>document.location = '#" + Request.QueryString["id"] + "'</script>";


    Sulla pagina da cui faccio il back :


    Response.Redirect("~/WebPages/Elenco.aspx?id=" + IDElemento.Value);

    Su ogni riga del repeater della pagina Elenco:


    <a name="<%# Eval("IDElemento") %>"></a>


    ma al ritorno la pagina si riposiziona dall'inizio...

  10. #10
    usa il codice che ho scritto io mettendolo nell'evento preRender

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 © 2026 vBulletin Solutions, Inc. All rights reserved.