Question

J'ai vu deux ou trois questions similaires sur le même sujet, mais aucune d'entre elles en ma question.

J'ai un site Web asp.net, et que vous souhaitez afficher un message d'état. (Asp: label qui disparaîtra en 5 secondes) à l'utilisateur après la base de données a été mis à jour

Je veux attribuer le texte à l'étiquette, puis le cacher avec Javascript.

Je suis la partie js triés, le seul problème est Comment appeler la fonction js après avoir affecté le texte au contrôle?

Disons que je suis mise à jour quelque chose dans la base de données avec le code suivant:

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

code derrière

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

S'il vous plaît aider!

MISE À JOUR: pas jquery s'il vous plaît, juste javascript plaine

Était-ce utile?

La solution

Pour répondre à votre question: « Comment puis-je appeler la fonction js après i l'attribution du texte au contrôle? ». Vous pouvez simplement ajouter un appel à « RegisterClientScriptBlock » à l'intérieur de votre cliquage événement pour sortir le JavaScript fourni par Luc.

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){...}
}

Autres conseils

Je personnellement utiliser jQuery pour cela, mais si vous voulez utiliser alors bon vieux JavaScript quelque chose comme ça va probablement faire l'affaire:

<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>

Si nécessaire, vous pourrait également intégrer le bloc de script dans un contrôle Literal et rendre visible que lorsque vous mettez à jour votre texte de l'étiquette.

Vous envoyez des messages de retour via Ajax ou un postback normal? Si c'est un postback normale, enregistrez javascript sur la page qui définit une minuterie et appelle votre fonction qui cache l'étiquette après expiration de la temporisation. L'exemple suivant utilise jQuery pour vous assurer que le DOM est chargé avant que le minuteur est démarré, mais il y a d'autres façons. Il cachera l'étiquette après 5 secondes est écoulé.

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

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

L'idée est fondamentalement la même si vous utilisez AJAX, sauf que vous réglez la minuterie dans le rappel onSuccess pour l'appel AJAX au lieu de la charge du document.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top