Nommage dynamique de variable [Résolu]

Messages postés
7
Date d'inscription
lundi 22 mars 2004
Dernière intervention
19 octobre 2004
- 19 oct. 2004 à 12:02 - Dernière réponse :
Messages postés
7
Date d'inscription
lundi 22 mars 2004
Dernière intervention
19 octobre 2004
- 19 oct. 2004 à 14:17
Bonjour à tous.
Dans le cadre du développement d'un intranet je cherche à nommer dynamiquement mes variables en C#, comme je le ferais en PHP (@var= "bu" , @@var="bi" => bu="bi").
Pourquoi?
Je veux créer une page contenant plusieurs boutons (qui seront en fait des onglets). La liste de ces boutons est le résultat d'une requête SQL. Ce résultat est variable selon le module dans lequel je me trouve.
J'ai donc un nombre variable de bouton à afficher (dans mon UserControl "onglets").
voici un exemple de code que j'aimerai utiliser :

foreach (DataTable t in ds.Tables){
foreach (DataRow r in t.Rows){
string onglet =(string)r["onglet"];
//créer bouton
//nom du bouton = onglet, text du bouton=onglet
//méthode onClick commune à tous les boutons
}
}

Je précice tout de suite que je ne peux pas me servir tout simplement de HyperLinks, car lorsque je click sur l'onglet je doit pouvoir donner la valeur onglet à la variable de session Session["Onglet"], en raison d'une transmission des variables de session vers ASP classic.

La seule solution que j'ai pu trouver est de créer un vecteur contenant plusieurs instances de boutons et de les nommer et les rendre visible en fonctions de mes besoins, mais j'ai alors des pbms de placement.

en résumé

est-il possible de nommer des variables dynamiquement en C sharp?
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
- 19 oct. 2004 à 13:00
3
Merci
Hello,
Pour ce que j'en sais, il n'est pas possible de créer des variables dynamiquement, par contre voici une solution pour ton problème :
foreach (DataTable t in ds.Tables){
 foreach (DataRow r in t.Rows){
  string onglet=(string)r["onglet"];
  Button btn = new LinkButton();
  btn.Text = "Ce que tu veux";
  btn.ID = (string)r["onglet"];
  btn.Click +=new EventHandler(btn_Click);
 }
}
...
private void btn_Click(object sender, System.EventArgs e)
{
 Session["Onglet"] = ((Button)sender).ID;
}

Amicalement, SharpMao

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de SharpMao
Meilleure réponse
Messages postés
95
Date d'inscription
mardi 15 juin 2004
Dernière intervention
2 juin 2007
- 19 oct. 2004 à 13:43
3
Merci
PlaceHolderButtons.Controls.Add(new TextBox) par exemple.

Merci cs_ousta 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_ousta
Meilleure réponse
Messages postés
1025
Date d'inscription
mardi 4 février 2003
Dernière intervention
7 juin 2010
- 19 oct. 2004 à 14:00
3
Merci
C'est vrai, j'avais oublié. Il faut ajouter le boutton créé à ton form. Le plus simple étant, comme l'a dit ousta de palcer un PlaceHolder sur ta page aspx, puis de lui ajouter des controls.
Si tu veux un peux mieux controler leur placement, ajoute plutôt une table
//A l'intérieur de ta boucle.
TableRow tr = new TableRow();
maTable.Rows.Add(tr);

TableCell td = new TableCell();
tr.Cells.Add(td);

td.Controls.Add(btn);

Amicalement, SharpMao

Merci SharpMao 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de SharpMao
Messages postés
7
Date d'inscription
lundi 22 mars 2004
Dernière intervention
19 octobre 2004
- 19 oct. 2004 à 14:17
0
Merci
merci bien!
en plus tout est déja dans une table. ça me sert pour mes onglets, une colonne contient l'image du bord gauche, ensuite colonne bouton, ensuite colonne bord droit.
merci encore!
Commenter la réponse de bimbol18

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.