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

tom741pawa 19 Messages postés mercredi 19 septembre 2007Date d'inscription 28 octobre 2008 Dernière intervention - 16 oct. 2008 à 00:30 - Dernière réponse : tom741pawa 19 Messages postés mercredi 19 septembre 2007Date d'inscription 28 octobre 2008 Dernière intervention
- 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
danious 27 Messages postés jeudi 8 juillet 2004Date d'inscription 5 novembre 2008 Dernière intervention - 16 oct. 2008 à 13:41
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

Merci danious 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de danious
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 16 oct. 2008 à 09:34
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
danious 27 Messages postés jeudi 8 juillet 2004Date d'inscription 5 novembre 2008 Dernière intervention - 16 oct. 2008 à 09:54
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
tom741pawa 19 Messages postés mercredi 19 septembre 2007Date d'inscription 28 octobre 2008 Dernière intervention - 16 oct. 2008 à 12:55
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
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 16 oct. 2008 à 12:57
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
nhervagault 6069 Messages postés dimanche 13 avril 2003Date d'inscription 15 juillet 2011 Dernière intervention - 16 oct. 2008 à 13:09
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
tom741pawa 19 Messages postés mercredi 19 septembre 2007Date d'inscription 28 octobre 2008 Dernière intervention - 16 oct. 2008 à 19:46
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.