Création d'une classe pour réutiliser du code sur différentes pages [Résolu]

Messages postés
19
Date d'inscription
mercredi 19 septembre 2007
Dernière intervention
28 octobre 2008
- - Dernière réponse : tom741pawa
Messages postés
19
Date d'inscription
mercredi 19 septembre 2007
Dernière intervention
28 octobre 2008
- 16 oct. 2008 à 19:46
Bonjour à tous,
je ne sais pas si je suis dans le bon forum, j'ai hésité avec le forum C#.

Je suis en train de créer un petit site web et j'ai 4 / 5 pages ou j'ai une dropdownlist.

J'ai fait une méthode sur chaque page dans le code-behind pour peupler la dropdownlist. Ca marche super, mais à chaque fois je suis obligé de faire un copier/coller de la méthode quand je veux créer une nouvelle page alors je me suis dit que ce serait peut être mieux de créer une classe externe et de la récupérer à chaque fois ^^.

J'ai pas mal d'interrogations :

Est-ce que les dropdownlist doivent avoir le même nom ?
dans ma method j'écris par exemple : maDropDownList.Items.Add() et j'adapte dans chaque method. Par exemple dans la page 2 : maDropDownList2.Items.Add()

Comment je peux faire en sorte que la classe s'adapte en fonction du nom de la dropDownList dans la page ?
Je ne sais pas trop comment expliquer ca : en gros pour ceux qui connaissent ce serait comme utiliser "global" dans une fonction en php.

Ce que je voudrai en gros c'est que dans mes pages :
je défini le nom de la dropdownlist pour qu'elle soit copiée et utilisé dans la classe qui va suivre
j'appelle ma classe externe.

Vaut-il mieux carrément que je créer complètement la dropdownlist dans la classe externe ?

J'espère que l'un d'entre vous arrivera à me comprendre ^^.

Merci d'avance.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
27
Date d'inscription
jeudi 8 juillet 2004
Dernière intervention
5 novembre 2008
3
Merci
Ah j'ai compris les choses différemment de nhervagault !
En fait les 2 méthodes aboutissent à ce que tu veux : ne pas être obligé de faire des copier/coller partout. J'ai parlé du UserControl parce que tu as insisté sur les dropdownlist (c'est-à-dire sur le design). Si c'est juste un problème de datasource identique dans plusieurs pages, la classe utilitaire est ce qu'il y a de mieux et de plus simple.

Sinon, pour répondre à ta question sur les usercontrol, supposons que ton usercontrol s'appelle "uc", tu peux :
- manipuler la dropdownlist en faisant : (DropDownList)uc.FindControl("madropdownlist"), pour par exemple choisir l'index sélectionné ou connaître ce qu'elle contient.
- ajouter des propriétés publiques à ton usercontrol, qui seront disponibles directement en faisant : uc.TaPropriete

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de danious
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
22
0
Merci
Salut

Il est possible de faire des classes utilitaire en Dotnet
et de passer dans les parametres de ta methode l'objet dropdowlist.

Apres ce qui est conseillé de ce mettre cette classe utilitaire en singleton
de facon a l'utiliser sans l'instancier.

Bon coding
Commenter la réponse de nhervagault
Messages postés
27
Date d'inscription
jeudi 8 juillet 2004
Dernière intervention
5 novembre 2008
0
Merci
Bonjour,

Ce n'est pas plutôt un UserControl qu'il te faut? L'usercontrol contiendrait la dropdownlist et la fonction pour la peupler dans son propre code-behind. Après, dans chaque page, tu ajoutes simplement ce usercontrol comme tu le ferais pour n'importe quel autre controle. Evidemment, tu pourras accéder et contrôler à ta guise la dropdownlist de l'usercontrol depuis chaque page.
Commenter la réponse de danious
Messages postés
19
Date d'inscription
mercredi 19 septembre 2007
Dernière intervention
28 octobre 2008
0
Merci
Re,
nhervagault : je n'ai pas très bien compris ce que tu as essayé de me dire (je suis encore débutant en C# ^^)

Je n'avais pas pensé sur le coup aux usercontrols : je n'en ai jamais fait, mais je vois à peu près à quoi ca ressemble.
Par contre ta dernière phrase danious m'intéresse ^^.
Je modifie donc ma question :
si j'utilise un usercontrol, je peux directement changer certains paramètres sur chaque page ?
c'est à dire par exemple : je peuple ma dropdownlist avec une requête sql que j'ai fait dans le usercontrol, est-ce que sur une page je peux modifié cette commande ?

Si c'est possible, auriez-vous un bon tutoriel ou autre sur les usercontrols ?

Merci d'avance.
Commenter la réponse de tom741pawa
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
22
0
Merci
Non un user control est une réunion de plusieurs controles.
Exemple de usercontrol, un textbox avec une image.

Ici l'utilisation d'une classe utilitaire - helper est suffisante.
Ajouter un usercontrol complexie l'application pour rien.

Tu peux utiliser un usercontrol si tu veux ajouter des comportement javascript
dessus par exemple aussi.
Mais il est possible de le faire avec un helper.

Dans la classe helper

je verrais
dropdowlistpopulate (dropdowlist dl, dictionnary<string,string> values)
{
foreach(string v in values){
dl.items.add(v.key,v.value);
}
dl.databing();
}

Un truc du genre (c'est non testé)
Commenter la réponse de nhervagault
Messages postés
6069
Date d'inscription
dimanche 13 avril 2003
Dernière intervention
15 juillet 2011
22
0
Merci
Je completes ma reponse en fonction de ton nouveau post

dropdowlistpopulate (dropdowlist dl, string sql)
{

//remplissage du dataset
dl.datavalue = ..
dl.datamember = ..
dl.datasource = dataset.tables[0];
dl.databing();
}

Un design pattern singleton
ressemble à

public MaClasse{
//cosntructeur private
private MaClasse()
{
}

public static MaClasse GetInstance()
{
if (instance==null){
lock (typeof(MaClasse))
{
instance = new MaClasse();
}
}
return instance;
}
}


//liste des methodes

public void SayHello(){
Console.write("hello");
}
}

}


//Utilisation

MaClasse.GetInstance().SayHello(); --> pas besoin de faire de new.
Commenter la réponse de nhervagault
Messages postés
19
Date d'inscription
mercredi 19 septembre 2007
Dernière intervention
28 octobre 2008
0
Merci
Merci bien pour vos réponses ^^.


Je teste tout ca dès que je peux.


 


Encore merci ^^.
Commenter la réponse de tom741pawa

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.