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.
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.
Je ne sais pas si c'est ce que tu cherche :
De plus, c'est peut être un peu bourrin il y a peut être une autre façon plus "propre" de procéder.
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; } }
Quand tu parles de retour en arrière, tu veux dire avec la touche au dessus d'entrée ?
PourJe veux dire les flèches avec lesquels on peux naviguer dans une page internetQuand tu parles de retour en arrière, tu veux dire avec la touche au dessus d'entrée ?
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
j'ai déjà essayémais il m'a sorti l'erreurle code de Pynouz'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 ?)
Il faut que tu les castes comme je t'ai dis
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")
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; }
Essaye ce code pour les Texbox :
Chez moi, il fonctionne mais je test sur une application windows form.
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; } }
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.
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
Je viens de tester dans une application asp.net et effectivement cela ne marche pas.
J'ai cependant trouver une solution fonctionnel :
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).
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; } }
Je te conseille cependant de te pencher sur une solution utilisant le javascript pour faire cela.
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 codeet coté asp
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") }
Code : Sélectionner tout - Visualiser dans une fenêtre à part <fieldset id="show" runat="server">
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.
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 is TextBox
)
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é.
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?)
@ Pynouz pour ta solution j'ai pas eu d'erreur masi les champs n'ont pas été vidés comme je veux, et pourJe viens de modifier mon code pour d'autres besoin. Je vais détailler ce que je cherche à avoir.De plus, je ne vois pas en quoi ceci est une solution à ton problème initial.
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éPS:Merci pour votre suiviTes 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
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)En essayant avec ce code ca ne fonctionnait pas est ce que j'ai une erreur quelque part
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") }
PS:sachant que txtCode est l'identifiant du textBox que je cherche à vider
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";
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager