finestra di conferma Javascript - ASP.NET
-
22-08-2019 - |
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
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.