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

    cambiare stile a un elemento al "submit"

    Salve a tutti.

    Io ho questo form, seguito da un elemento h2:

    codice:
    <form id="engine" runat="server" method="get">
    
       <fieldset>
    	<legend class="b">Ricerca</legend>
    
    	<label for="content_title" class="search">Titolo:</label>
    	<asp:TextBox runat="server" id="title" CssClass="textbox"></asp:TextBox>
    
            ...altre textbox...
    				
    	...e il pulsante submit:
    
    	<asp:Button ID="submit" runat="server" Text="Cerca" />
    				
    	</fieldset>
    </form>
    
    <h2 id="risultati" class="hidden">Risultati della ricerca:</h2>
    Al caricamento della pagina, l'elemento h2 ha display:none.

    Io vorrei che quando l'utente preme il pulsante submit e sulla querystring compaiono i parametri di ricerca, l'elemento h2 diventi display:block.

    Come posso fare?

    Vi ringrazio anticipatamente,
    M.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    Messaggi
    91
    Metti runat="server" al tag h2 e sul postback gli cambi lo stile.

  3. #3
    Ciao,
    Grazie della risposta.

    Potresti gentilmente fare un esempio in codice c#?

    Grazie,
    M.

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ciao, una volta aggiunto l'attributo runat="server", nell'evento in cui devi visualizzare l'H2, prova con:

    codice:
    HtmlControls.HtmlGenericControl H2 = new HtmlControls.HtmlGenericControl();
    H2 = (HtmlGenericControl)this.engine.FindControl("risultati");
    H2.Style.Add("display", "block");

  5. #5
    Grazie anche a te della riposta.

    C'è un problema: il compilatore mi dice:
    "System.NullReferenceException: Riferimento a un oggetto non impostato su un'istanza di oggetto."

    PS: Il codefile.cs è associato alla masterpage, il controllo da trovare è sulla contentpage.

    Ecco il codice:

    codice:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    
    public partial class marmar : System.Web.UI.MasterPage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack)
            {
                System.Web.UI.HtmlControls.HtmlGenericControl H2 = new System.Web.UI.HtmlControls.HtmlGenericControl();
                H2 = (HtmlGenericControl)this.FindControl("resultsH2");
                H2.Style.Add("display", "none");
            }
        }
    
    }

  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    credo che tu debba "scovarlo"... mettendoci il "percorso" giusto (presumibilmente l'id del content) dopo "this.engine."

    comunque vedo un id diverso, "risultati" e' cambiato ?

  7. #7
    Sì scusami, lID corretto è "resultsH2", "risultati" era il nome vecchio .

    Non ho capito una cosa: hai scritto "this.engine.", ma "engine" è l'id del form, mentre il tag h2 è fuori dal form (in ogni caso il compilatore da errore dicendo che "engine" non è un nome conosciuto). Posso ometterlo?

    Grazie di nuovo,
    M.

  8. #8
    Risolto! Basta modificare l'ID del controllo in:

    ctl00$content$resultsH2

    Ti ringrazio moltissimo, aggiungerò il tuo nome alla pagina ringraziamenti del sito.

    Tanto che ci siamo, avrei un altro problemino:

    Nella pagina ci sarà un pulsante che cliccandolo cambierà lo stile di tutti gli elementi "div", e cliccandolo di nuovo farà ritornare la pagina al layout di default.
    Ho impostato tutto tramite javascript, ma a ogni refresh della pagina o all'apertura di un link si ritorna allo stile normale.

    Io vorrei che lo "stile2" rimanesse fin quando l'utente non chiude la finestra del browser o clicca di nuovo sul pulsante.

    è possibile farlo tramite c#?

    Grazie di nuovo,
    M.

  9. #9
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da marmar.it
    Sì scusami, lID corretto è "resultsH2", "risultati" era il nome vecchio .

    Non ho capito una cosa: hai scritto "this.engine.", ma "engine" è l'id del form, mentre il tag h2 è fuori dal form (in ogni caso il compilatore da errore dicendo che "engine" non è un nome conosciuto). Posso ometterlo?

    Grazie di nuovo,
    M.
    La prassi è che tutti gli elementi siano nel form. E nell'esempio che ho fatto sul mio pc il tag <h2> l'ho inserito li'.

    Che l'id del Form non sia riconosciuto è strano, è un elemento lato server della pagina...dovrebbe vederlo. Sicuro di non aver cambiato anche l'ID di quello ?

    Comunque, mettendo runat="server" all'H2, l'id client dovrebbe essere irrilevante.
    Tant'e' vero che potresti anche semplicemente fare:
    codice:
    resultsH2.Style.Add("display", "block")
    io ho fatto il giro "lungo" Scusami, c'era un altro motivo per cui facevo in quel modo (c'era altro codice in mezzo).

  10. #10
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Originariamente inviato da marmar.it
    Nella pagina ci sarà un pulsante che cliccandolo cambierà lo stile di tutti gli elementi "div", e cliccandolo di nuovo farà ritornare la pagina al layout di default.
    Ho impostato tutto tramite javascript, ma a ogni refresh della pagina o all'apertura di un link si ritorna allo stile normale.

    Io vorrei che lo "stile2" rimanesse fin quando l'utente non chiude la finestra del browser o clicca di nuovo sul pulsante.

    è possibile farlo tramite c#?
    In asp.net ci sono i temi che fanno cose del genere, di solito non vengono fatte 'a mano'.

    Potresti comunque impostare una variabile di sessione che accendi o spegni (valore 0 oppure 1 ad esempio se l'utente vuole lo stile 0 oppure l'1).

    Per renderlo permanente in modo da ritrovarlo alla seconda visita, i suddetti valori devi conservarli nel db o in un cookie, da qualche parte con persistenza insomma. Ma ripeto, hai fatto a mano un'operazione supportata dal FW in altro modo. L'argomento è questo: http://msdn.microsoft.com/it-it/libr...(v=vs.80).aspx

    Ciao grazie per il nome, non c'e' bisogno

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.