Nommage dynamique de variable [Résolu]

bimbol18 7 Messages postés lundi 22 mars 2004Date d'inscription 19 octobre 2004 Dernière intervention - 19 oct. 2004 à 12:02 - Dernière réponse : bimbol18 7 Messages postés lundi 22 mars 2004Date d'inscription 19 octobre 2004 Dernière intervention
- 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 

4 réponses

Répondre au sujet
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 19 oct. 2004 à 13:00
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SharpMao
cs_ousta 95 Messages postés mardi 15 juin 2004Date d'inscription 2 juin 2007 Dernière intervention - 19 oct. 2004 à 13:43
+3
Utile
PlaceHolderButtons.Controls.Add(new TextBox) par exemple.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_ousta
SharpMao 1025 Messages postés mardi 4 février 2003Date d'inscription 7 juin 2010 Dernière intervention - 19 oct. 2004 à 14:00
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de SharpMao
bimbol18 7 Messages postés lundi 22 mars 2004Date d'inscription 19 octobre 2004 Dernière intervention - 19 oct. 2004 à 14:17
0
Utile
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.