Masquer div si postback [Résolu]

Messages postés
14
Date d'inscription
mardi 17 février 2009
Dernière intervention
22 avril 2009
- 13 mars 2009 à 17:34 - Dernière réponse :
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Dernière intervention
21 juillet 2010
- 18 mars 2009 à 17:10
Bonjour a tous,

voila sur une de mes pages asp.net (c#) il y a quelque div que je cache grâce a des radioboutons,
j'ai aussi un gridview avec sélection (génère un postback).

Ce que je voudrais c'est que lorsque la page éxécute un postback que se sois le div du dernier bouton radio sélectionner.

En fait j'ai déjà une partie de code toutefois elle ne marche pas , j'ai toujours lors du postback le div que je ne cachais pas au début :

if(Page.IsPostBack)
        {
            string idRbtn = "";
            string divAfficher = "";            if (rbtnIU.Checked true) { idRbtn rbtnIU.ID; divAfficher = "divU"; }            else if (rbtnA.Checked true) { idRbtn rbtnA.ID; divAfficher = "divA"; }            else if (rbtnR.Checked true) { idRbtn rbtnR.ID; divAfficher = "divR"; }            else if (rbtnL.Checked true) { idRbtn rbtnL.ID; divAfficher = "divL"; }            else if (rbtnG.Checked true) { idRbtn rbtnG.ID; divAfficher = "divG"; }

            String sb = "";
            sb += ("function affichageDiv() {");            sb +("document.getElementById('divA').style.display 'none';");            sb +("document.getElementById('divUr').style.display 'none';");            sb +("document.getElementById('divR').style.display 'none';");            sb +("document.getElementById('divG').style.display 'none';");            sb +("document.getElementById('divLs').style.display 'none';");            sb +("document.getElementById('" + idRbtn + "').checked 'checked';");            sb +("document.getElementById('" + divAfficher + "').style.display 'block'; }");

            this.Page.ClientScript.RegisterStartupScript(Page.GetType(), "affichageDiv", sb, true);
        }

J'ai vérifié plusieurs fois c'est les bon id de div etc.

-----------------------------------------------------------------------------------------------
Jo
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
3
Merci
Hello,

Au lieu d'injecter du Javascript pour afficher ou cacher tes div, je te conseil d'utiliser le contrôle "Panel" d'ASP.net qui est fait pour ca.

Après dans le code-behind pour afficher ou masquer ton panel (div), tu utilises simplement TonPanel.Visible = False;

A++

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
Messages postés
14
Date d'inscription
mardi 17 février 2009
Dernière intervention
22 avril 2009
- 13 mars 2009 à 20:39
3
Merci
J'y pense si quelqu'un connais une solution avec le javascript et les div j'aimerais aussi la connaitre puisque je commence à l'apprendre (le javascript) et j'apprécirais beaucoup

Merci encore fabienfs sa marche comme je voulais

Merci jostag 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de jostag
Meilleure réponse
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Dernière intervention
21 juillet 2010
- 18 mars 2009 à 01:06
3
Merci
Bonsoir,

Si tu continues à faire un postback, la solution de fabienfs reste bien entendu la meilleure, et t'évitera le problème de la persistance de l'état de ta page, qui se posera en js dès que tu feras un postback.
(Pour ce que tu voulais faire au début,  tu pouvais simplement appeler ta fonction js lors du load, en mettant runat=server sur ton body en lui donnant un id (ici, "bd"), et écrire en plus :
bd.Attributes.Add("onload","affichageDiv()"); (mais c'est juste pour le signaler...))
Sinon, si tu n'as pas besoin de postback, tu peux tout faire en js. Il suffit de mettre un test sur tes radiobuttons (tu peux ajouter l'appel sur le onload de ta page, en c# avec attributes.add ;, en le mettant sur l'événement onclick de tes radiobuttons, et en supprimant l'autopostback). Tu peux écrire directement ta fonction js dans ta page ou dans un fichier appelé, et masquer les div selon ton besoin.
Dans ce cas (mais comme dans l'autre, puisque c'est du javascript), n'oublie pas que les modifications client ne seront pas reportées directement côté serveur : d'où le grand intérêt du panel, car dès que tu auras un postback, les div cachées réapparaîtront.
Cela dit, si tu veux éviter un retour serveur lorsque tu veux seulement masquer une div, tu peux signaler en js quelles div doivent être masquées (ou affichées) dans un hiddenfield asp, que tu pourras traiter lors du postback dans ton code c#.
En bref, cela dépend pas mal de ce que tu fais : si tu dois faire un postback systématique, le panel est le mieux (mais pour la fluidité, éventuellement, regarde alors du côté de l'ajax). Sinon, si tu veux seulement cacher tes div, le js sera très bien.

GGtry

Merci ggtry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de ggtry
Meilleure réponse
Messages postés
14
Date d'inscription
mardi 17 février 2009
Dernière intervention
22 avril 2009
- 18 mars 2009 à 15:55
3
Merci
Merci GGtry !!

en fais le seul problème que me pose le postback c'est que j'ai certaine information que ne s'affiche pas comme il faut puisque j'ai du modifié mon affichage pour la n ième fois.

sinon je vais regarder ce que tu m'as dis plus tard (et ajax je connais pas)

Merci jostag 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de jostag
Meilleure réponse
Messages postés
417
Date d'inscription
vendredi 13 juin 2008
Dernière intervention
21 juillet 2010
- 18 mars 2009 à 17:10
3
Merci
Salut,


Une précision : pour le hiddenfield, j'ai dit n'importe quoi : en fait, puisque tu as des radiobuttons, il suffit de récupérer les valeurs de ceux-ci lors du postback. Tu peux d'ailleurs faire des panel côté asp : ceux-ci sont rendus en html par un div. De cette façon, tu peux les masquer comme des div en pur javascript, et en cas de postback tu récupères le radiobutton coché et tu masques ce qui doit l'être (dans ce cas, avec la propriété style et display, parce que visible false ne te permettrait plus de récupérer les panels en js).

GGtry

Merci ggtry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 89 internautes ce mois-ci

Commenter la réponse de ggtry
Messages postés
14
Date d'inscription
mardi 17 février 2009
Dernière intervention
22 avril 2009
- 13 mars 2009 à 20:22
0
Merci
Merci,

c'est sur que sa ne fait pas le même effet (j'aime bien l'espèce d'effet déroulant des div quand on les affiches ou masque) mais bon c'est pas pour l'effet que je fais le projet alors je crois que je vais prendre ta solution.
Commenter la réponse de jostag

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.