[ASP.NET] Afficher un message d'erreur pendant quelques secondes

Résolu/Fermé
Chewi-Chew
Messages postés
44
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
12 mars 2013
- 24 janv. 2013 à 14:02
Chewi-Chew
Messages postés
44
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
12 mars 2013
- 24 janv. 2013 à 14:48
Bonjour,

Cela fait maintenant quelques heures que je bute sur un probleme ASP.

Grosso modo j'aimerai afficher un message d'erreur (ou d'information) en haut de page pendant 5 secondes.
La premiere partie c'est d'afficher un message et ici il n'y a pas de problème puisque mon déclencheur engendre un postback.

La probleme viens de la suppression du message d'erreur, puisque je le fais grace a un System.Timers.Timer de 5 secondes et que l'événement PostBack n'est pas déclenché.

J'ai essayé des dizaines de méthodes sans trouver la bonne (sinon je ne serai pas ici).
- Avec et sans Update Panel
- En appelant un fonction javascript
- En utilisant des thread sleep (couplé ou non avec des AutoResetEvent)
- ...


Donc j'en appel a vos connaissances. car je suis a cours d'idée

Voici mon code (behind) pour le moment :
public static void AfficherAlert(Page page, string message)
        {
            Control ctrl = page.Master.FindControl("labMessageApplication");
            if (ctrl != null && (ctrl as Label != null))
            {
                ((Label)ctrl).Text = message;
                ((TableCell)((Label)ctrl).Parent).BackColor = Color.White;

                System.Timers.Timer tm = new System.Timers.Timer(5000);
                tm.Elapsed += new System.Timers.ElapsedEventHandler(page.tm_Elapsed);
                tm.AutoReset = false;
                tm.Start();
            }
        }

        static void  tm_Elapsed(this Page page, object sender, System.Timers.ElapsedEventArgs e)
        {
            ((System.Timers.Timer)sender).Stop();
            Control ctrl = page.Master.FindControl("labMessageApplication");
            if (ctrl != null && (ctrl as Label != null))
            {
                ((Label)ctrl).Text = "";
                ((TableCell)((Label)ctrl).Parent).BackColor = Color.Transparent;
            }
        }


Et voici mon code asp :
<asp:ScriptManager ID="ScriptManager1" runat="server" />
            <script type="text/javascript">
                function ClearMessageApplication() {
                    document.getElementById("labMessageApplication").value = "";
                }
            </script>
            <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                <ContentTemplate>
                    <asp:Table ID="tableMessageApplication" runat="server" Width="100%" Style="position: fixed;
                        z-index: 2; left: 0; top: 0;">
                        <asp:TableRow>
                            <asp:TableCell HorizontalAlign="Center">
                                <asp:Label ID="labMessageApplication" runat="server" ForeColor="Red" />
                            </asp:TableCell>
                        </asp:TableRow>
                    </asp:Table>
                </ContentTemplate>
            </asp:UpdatePanel>



Merci à tous !

1 réponse

Chewi-Chew
Messages postés
44
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
12 mars 2013
6
24 janv. 2013 à 14:48
J'ai finalement trouvé cette maniere de faire ! Pas top mais au moins ca fonctionne

setTimeout(function disparition() { document.getElementById("Message").style.visibility = "hidden" }, 5000);
0