Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3053 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [ASP.Net / C# ]Checkbox et Controls

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASP.Net / C# ]Checkbox et Controls

n°1733812
Revolution​67
Posté le 19-05-2008 à 16:17:36  profilanswer
 

Bonjour,
 
Dans une page asp.net  de type modification de formulaire, j'ai plusieurs onglets :
- le premier, ne comporte que des textbox et une liste déroulante, et ne me pose pas problème
- le second, comporte une liste de checkbox à cocher, et me pose problème
- en bas de cette page, j'ai des boutons me permettant de sauvegarder les modifications ou de les annuler
 
Le problème que je rencontre, est que lors du premier chargement de ma page, les checkbox sont "ajoutés" à ma page, mais pas aux Controls de cette page, alors que je procède comme ca :
 

Code :
  1. StringBuilder l_SBRessource = new StringBuilder();
  2. List<CRessource> l_Ressources = CRessourceManager.Rechercher();
  3. foreach (CRessource l_Ressource in l_Ressources)
  4. {
  5.      CheckBox l_CheckBox = new CheckBox();
  6.      l_CheckBox.ID = "cb"+l_Ressource.Identifiant.ToString();
  7.      ....
  8.      StringWriter l_Writer = new StringWriter();
  9.      HtmlTextWriter l_HtmlWriter = new HtmlTextWriter(l_Writer);
  10.      l_CheckBox.RenderControl(l_HtmlWriter);
  11.      ...
  12.      l_SBRessource.Append("<tr><td>" );
  13.      l_SBRessource.Append(l_Writer.ToString());
  14.      ...
  15. }


 
Mais lors du parcours des Controls de la page, les Checkbox ne sont pas ajoutés, car Controls ne comprends qu'un seul élément :
 

Code :
  1. foreach (Control l_Control in Controls)
  2. {
  3.      ...
  4. }


 
Y aurait il une autre façon de procéder?
De quoi cette eureur peut être venir?

mood
Publicité
Posté le 19-05-2008 à 16:17:36  profilanswer
 

n°1734161
x1800+
Posté le 20-05-2008 à 01:02:10  profilanswer
 

Bonsoir,
 
Tu peux rajouter les controles à ta page (et a n'importe quel Container en fait :o) via le bout de code suivant :

Code :
  1. Page.Form.Controls.Add(l_CheckBox);


ou

Code :
  1. TonContainer.Controls.Add(l_CheckBox);


Message édité par x1800+ le 20-05-2008 à 01:04:04
n°1735199
Revolution​67
Posté le 21-05-2008 à 13:48:00  profilanswer
 

D'accord oui!
Mais lors du rechargement de la page, via un bouton par exemple, quand on passe dans le IsPostBack, est il possible de récupérer les valeurs des contrôles?
Je voudrais récupérer l'état de mes checkbox (coché/décochés) en fontion de leur ID...

n°1735269
x1800+
Posté le 21-05-2008 à 15:26:08  profilanswer
 

A priori vu ton bout de code, tu ne fais qu'écrire le "rendu" HTML de ta checkbox, dans un HTMLTextWriter.
Elle n'est donc pas présente dans la liste des controles de la Page, ni même de ses enfants.
 
Par conséquent, elle n'est pas soumise au PostBack.
 
Pour que le PostBack fonctionne automatiquement (et donc pour qu'il conserve la valeur de la propriété Checked de ta CheckBox), tu dois l'ajouter a la liste des controles de la Form (Page.Form.Controls.Add(...) au chargement de ta page)
 
 
Il faut donc :
 - Que tu crée tes CheckBox dans une surcharge du OnPreInit (par exemple)
 - Que tu les ajoutes au formulaire dans le Page_Load
 
Tu pourras alors récupérer la valeur de ta CheckBox une fois que le chargement sera effectué (OnLoadComplete ou Render par exemple).
 

Code :
  1. CheckBox maCheckBox = new CheckBox();
  2.     protected override void OnPreInit(EventArgs e)
  3.     {
  4.         maCheckBox.ID = "cb";
  5.         base.OnPreInit(e);
  6.     }
  7.     protected void Page_Load(object sender, EventArgs e)
  8.     {
  9.         Page.Form.Controls.Add(maCheckBox);
  10.     }
  11.     protected override void OnLoadComplete(EventArgs e)
  12.     {
  13.        if (Page.IsPostBack)
  14.         {
  15.             Response.Write(maCheckBox.Checked + "</br>" );
  16.         }
  17.         base.OnLoadComplete(e);
  18.     }

n°1735286
dll_75
Posté le 21-05-2008 à 15:50:16  profilanswer
 

Ca va pas solutionner ton probleme precis mais:
 
Tu peux aussi jeter un oeil du coté des Repeater
(System.Web.UI.WebControls) et des ItemTemplate coté HTML,
pour gérer des listes/formulaires dynamiques importants de controls.
 
un peu comme toi, pour un intranet je devais gerer des listes dynamiques avec pour chaque ligne (item) plusieurs objets dont 1 checkbox.
 
Avec les Repeaters couplés a du DataBinding (les données des listes dans des DS) je suis arrivé a un truc pas mal niveau evolution/possibilité/design et peu de code au final.
 
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [ASP.Net / C# ]Checkbox et Controls

 

Sujets relatifs
[C GTK]Ouvrir une "frame web" dans un programmeProgramme C serie de commande
{C#} Projet: Administrateur Tool : Recrute[C] probleme avec librairie mysql.h [résolu]
C'est la poule ou l'oeuf...lecture d'un fichier wav en C
C# probleme pour trouver mon System.IO.FileLibrairie LibTorrent & construction projet Visual C++
[C#.NET] Communication entre 2 forms, help please 
Plus de sujets relatifs à : [ASP.Net / C# ]Checkbox et Controls


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR