Domanda

Ho visto un paio di domande simili sullo stesso argomento, ma nessuno di loro rivolto il mio problema.

Ho un sito web asp.net, e voglio mostrare un messaggio di stato. (Asp: label che scomparirà in 5 secondi) per l'utente dopo che il database è stato aggiornato

Voglio assegnare il testo per l'etichetta, e poi nasconderlo con Javascript.

ho ottenuto la parte js risolto, l'unico problema è Come chiamare in funzione js dopo ho assegnato il testo al controllo?

diciamo che sto aggiornando qualcosa nel database con seguente codice:

<asp:Button ID="btnUploadFiles" runat="server" OnClick="buttonSubmit_Click" Text="Update"  />

Codice dietro

protected void buttonSubmit_Click(object sender, EventArgs e)
    { try{// update the database  
          // change label text to tell the user update succeeded}
      catch(Exception ex){...}
    }

per favore aiutatemi!

UPDATE: no jquery per favore, semplicemente javascript

È stato utile?

Soluzione

Per rispondere alla tua domanda "Come chiamare in funzione js dopo che ho assegnato il testo al controllo?". Si può solo aggiungere una chiamata a 'RegisterClientScriptBlock' all'interno del pulsante evento click per emettere il JavaScript fornito da Luca.

protected void buttonSubmit_Click(object sender, EventArgs e)
{ 
    try
    {
       // update the database  
       // change label text to tell the user update succeeded
       label.Text = "Message";
       string js = "function hideLabel(){document.getElementById('" + label.ClientID + "').style.display = 'none'};setTimeout(hideLabel, 5000);"
       ClientScript.RegisterClientScriptBlock(this.GetType(), "test", js ,true);
    }
    catch(Exception ex){...}
}

Altri suggerimenti

userei personalmente jQuery per questo, ma se si desidera utilizzare Plain Old JavaScript, allora qualcosa di simile probabilmente fare il trucco:

<script type="text/javascript">
function hideLabel()
{
    // replace yourLabelID with <%=YourLabelID.ClientID%> if it's a .NET Label control
    document.getElementById('yourLabelID').style.display = 'none';
}
setTimeout('hideLabel()', 5000);
</script>

Se necessario, si potrebbe anche incorporare il blocco di script in un controllo Literal e solo renderlo visibile quando si aggiorna il testo dell'etichetta.

Stai scrivendo indietro tramite Ajax o un postback normale? Se si tratta di un postback normale, basta registrarsi alcuni javascript sulla pagina che imposta un timer e chiama la funzione che nasconde l'etichetta dopo il timer scade. L'esempio seguente utilizza jQuery per assicurarsi che il DOM è stato caricato prima di avviare il timer, ma ci sono altri modi. Si nasconde l'etichetta dopo 5s è trascorso.

function hideLabel(label)
{
   $(label).hide();
}

$(document).ready( function() {
    var label = $('#labelID');
    setTimer(function() { hideLabel(label); ),5000);
});

L'idea è fondamentalmente lo stesso se si utilizza AJAX, ad eccezione di impostare il timer nella richiamata onSuccess per la chiamata AJAX invece che sul carico documento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top