IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Simuler l'évenement retour en arrière navigateur


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut Simuler l'évenement retour en arrière navigateur
    Bonjour,

    Je voudrais savoir comment simuler l'évènement de retour en arrière de navigateur car je cherche à réinitialiser(les vider) les champs quand l'utilisateur fait un retour en arrière.

    Merci.

  2. #2
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Je ne sais pas si c'est ce que tu cherche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void button1_Click(object sender, EventArgs e)
            {
                foreach (Control _control in this.Controls)
                {
                    _control.Text = String.Empty;
                }
            }
    De plus, c'est peut être un peu bourrin il y a peut être une autre façon plus "propre" de procéder.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Quand tu parles de retour en arrière, tu veux dire avec la touche au dessus d'entrée ?

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Pour
    Quand tu parles de retour en arrière, tu veux dire avec la touche au dessus d'entrée ?
    Je veux dire les flèches avec lesquels on peux naviguer dans une page internet

  5. #5
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Dans ce cas, le code de Pynouz est bon mais il faut quand même vérifier si tes controls sont des textbox dans le foreach sinon tu risques de réinitialiser tes labels ou autre

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    j'ai déjà essayé
    le code de Pynouz
    mais il m'a sorti l'erreur
    'System.Web.UI.Control' ne contient pas une définition pour 'text' et aucune méthode d'extension 'text' acceptant un premier argument de type 'System.Web.UI.Control' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?)

  7. #7
    Membre éprouvé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2011
    Messages
    487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2011
    Messages : 487
    Points : 945
    Points
    945
    Par défaut
    Il faut que tu les castes comme je t'ai dis

  8. #8
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    J'ai oublié de faire le cast mais malgré que j'ai fait comme vous m'avez dis ca ne marche pas toujours j'avais les champs plein si je faisait un retour en arrière. voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    foreach (Control _control in this.Controls)
                    {
                        TextBox textbox = _control as TextBox;
                        if (textbox != null)
                        {
                            textbox.Text = string.Empty;
                        }
     
                    }
    Response.Redirect("Next.aspx")

  9. #9
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut
    Et ça, ça ne fonctionne pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach (Control _control in this.Controls)
    {
    	if (_control is TextBox)
    		_control.Text = string.Empty;
    }

  10. #10
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Essaye ce code pour les Texbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    foreach (Control _control in this.Controls)
                {
                    if (_control.GetType() == typeof(TextBox))
                    {
                        _control.Text = String.Empty;
                    }
                }
    Chez moi, il fonctionne mais je test sur une application windows form.

    Si cela marche fais de même pour tous les controls que tu veux réinitialiser.

    edit : Désolé je n'avais pas vu le post de ac/dc qui fonctionne aussi.

  11. #11
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Je ne sais pas pourquoi ça marche chez vous mais chez moi toujours j'ai la même erreur d'avant.

    PS:J'ai testé les 2

  12. #12
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Je viens de tester dans une application asp.net et effectivement cela ne marche pas.

    J'ai cependant trouver une solution fonctionnel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach (Control _control in Panel1.Controls)
            {
     
                if (_control.GetType() == typeof(TextBox))
                {
                    ((TextBox)_control).Text = String.Empty;
                }
            }
    Il faut que tu mette tous les Controls que tu veux réinitialiser dans un panel et ensuite tu parcours dans la boucle foreach tous ses control afin de les mettre a string.empty (ici l'exemple pour les TextBox).

    Je te conseille cependant de te pencher sur une solution utilisant le javascript pour faire cela.

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Je reviens vers vous car ca ne marchait plus chez moi ce que j'ai fait c'est que j'ai rajouté un fieldset et dedans j'ai met les champs à vider ce qui me parait mieux c'est après le click sur le boutton1 le fieldset devient invisible mais quand j'ai fait un retour en arrière je trouve que le fieldset est visible.Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void button1_Click(object sender, EventArgs e)
            {
                show.Visible = false;
                Response.Redirect("validatepage")
            }
    et coté asp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <fieldset id="show" runat="server">

  14. #14
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Je ne comprend pas ton problème.

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    Mon problème c'est que la solution que tu viens de me donner ne fonctionnait pas chez moi, pour faire autrement j'ai met tous les champs à vider dans un fieldset et en cliquant sur le button1 je rend invisible ces champs et je redirige vers la page qui suit mais ma méthode n'a pas donné grande chose car en revenant en arrière avec le navigateur je trouve qu'ils sont visibles.

    J'espère que t'as compris ce que je veux dire.

  16. #16
    Membre éprouvé Avatar de kheironn
    Homme Profil pro
    Chef de projets technique C# / MVC / .Net
    Inscrit en
    Février 2007
    Messages
    822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets technique C# / MVC / .Net
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2007
    Messages : 822
    Points : 1 108
    Points
    1 108
    Par défaut
    Il faut que tu fasses une boucle qui parcour tous les contrôles de ta pages en entrant dans les contrôles de type container pour y trouver les textboxes.

    une fois que tu les as trouvé, tu les identifes comme TextBox (avec ) et (si true) tu affectes ta valeur (
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (MonControl as TextBox).text = string.Empty
    )

    Pour la boucle, c'est un peu "touchy" mais pas très, tu gardes le principe
    for (intitialisation ; test de fin ; incrémentation). Je n'ai malheureusement plus la syntaxe exact en tête et je n'ai plus accès au code pouvant servir d'exemple. En cherchant un peu tu devrais réussir à monter cette boucle.

    Par contre, en utilisant cette méthode, tu sollicites le serveur en faisant un postback ! Tu devrais envisager une sollution côté client en js comme celà t'a été suggéré.

  17. #17
    Membre habitué Avatar de Pynouz
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 274
    Points : 177
    Points
    177
    Par défaut
    Tes champs reviennent visibles car ceux-ci sont réinitialisés au moment du chargement de ta page et reviennent donc a leur valeur initial qui est "visible" si je ne m'abuse.

    De plus, je ne vois pas en quoi ceci est une solution à ton problème initial. Je trouve déjà la solution que je t'ai donné pas très "propre"... (c'est pourquoi je t'invite encore à te pencher sur le javascript).

    Sinon, pourrais-tu m'indiquer ce qui ne marche pas dans mon code? (Message d'erreur?)

  18. #18
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    @ Pynouz pour ta solution j'ai pas eu d'erreur masi les champs n'ont pas été vidés comme je veux, et pour
    De plus, je ne vois pas en quoi ceci est une solution à ton problème initial.
    Je viens de modifier mon code pour d'autres besoin. Je vais détailler ce que je cherche à avoir.
    En fait j'ai un champ dans lequel l'internaute doit rentrer un code et j'ai un boutton en cliquant dessus j'affiche dropdownlist qui contient un nombre de place dont il a droit, en sélectionnant un nombre donné il peux valider sa transaction(passer à une autre page). Jusqu’au la tout sa passe bien mais mon problème c'est que l'internaute peux faire du retour en arrière avec le navigateur et du coup il va tomber sur la page ou il reste le nombre de places autorisés(initial tandis que ce nombre doit devenir initial - pris). Moi ce que j'ai voulu faire c'est soit vider le champ qui contient le code soit initialiser le dropdownlist pour que l'internaute ne crois pas qu'il lui reste(initial) tandis qu'il lui reste(initial -pris).

    Comme j'ai un postback déja dans ma page et moi j'initialise les champs if(!ispostback) je peux pas faire grand chose du coté
    Tes champs reviennent visibles car ceux-ci sont réinitialisés au moment du chargement de ta page et reviennent donc a leur valeur initial qui est "visible" si je ne m'abuse
    PS:Merci pour votre suivi

  19. #19
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 230
    Points : 68
    Points
    68
    Par défaut
    J'ai rajouté ce code javascript au moment du click sur le boutton1 qui me fait la redirection vers une autre page. Sachant qu'il y a un traitement c# que je ne vais pas le citer( ce qui m’intéresse c'est plutot le javascript pour vider les champs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    protected void Button1_Click(object sender, EventArgs e)
    {
    // traitement c#
    string javaScript = "<script type='text/javascript'>"
                            + "function vider_champ()"
                            + "{"
                            + "<%# txtCode %>.Text =''; "
                            + "<%# txtNum %>.Text =''; "
                            + "}"
                            + "</script>\n";
                        ClientScript.RegisterStartupScript(this.GetType(), "key", javaScript);
     
                        Response.Redirect("page2.aspx")
    }
    En essayant avec ce code ca ne fonctionnait pas est ce que j'ai une erreur quelque part
    PS:sachant que txtCode est l'identifiant du textBox que je cherche à vider

  20. #20
    Membre habitué Avatar de ac/dc
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 369
    Points : 197
    Points
    197
    Par défaut
    Et comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    string javaScript = "<script type=\"text/javascript\">"
                            + "function vider_champ()"
                            + "{"
                            + "<%# txtCode %>.value =\"\"; "
                            + "<%# txtNum %>.value =\"\"; "
                            + "}"
                            + "</script>\n";

Discussions similaires

  1. PB retour arrière navigateur
    Par progamer54 dans le forum JSF
    Réponses: 3
    Dernier message: 05/09/2007, 09h38
  2. Javascript comment faire le retour en arrière
    Par bozykely3 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 11/07/2007, 16h39
  3. Retour en arrière?
    Par Ryuuku dans le forum Visual C++
    Réponses: 7
    Dernier message: 20/03/2007, 19h23
  4. Possibilité de retour en arrière ?
    Par Ganak dans le forum Windows XP
    Réponses: 5
    Dernier message: 28/10/2006, 10h16
  5. [FTP]Retour en arrière
    Par aDamas dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 21/02/2006, 16h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo