Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : DropDownList et DataSource d'objets [ WebForms / WebControl ] (Alexandre Marlot)

vendredi 13 avril 2007 à 20:26:09 | DropDownList et DataSource d'objets

Alexandre Marlot

Bonjour.

Je désire alimenter une DropDownList à partir d'une collection d'objet. Je réalise pour cela un binding avec les propriété value et text (afin d'avoir un affichage correct). Tout cela marche très bien.

Lorsque j'affecte mon dataSource, j'affecte une collection d'objet qui contienne plusieurs property(nom,prenom, age ...) . J'aimerais pouvoir récupérer ses property lorsque par exemple on selectionne une ligne de cette dropdownlist afin de les afficher directement (sans les rechargées !). Je n'ai pas réussis à obtenir mes objets que j'avais affecté lors du binding.
Il n'existe pas de : monDropDownList.selectedItem.getObject() :(((( (ou équivalent).

J'espère avoir été clair :)
Si ce que je veux faire n'est pas possible, comment dois je faire proprement ce genre de chose ?

Merci d'avance
Alexandre

samedi 14 avril 2007 à 13:12:24 | Re : DropDownList et DataSource d'objets

makito

Utilise un tableau public de tes objets

samedi 14 avril 2007 à 13:32:14 | Re : DropDownList et DataSource d'objets

Alexandre Marlot

Bonjour.

J'y avais bien pensé mais il faut que je déclare le tableau en static si mes souvenirs sont bon non ? (car sinon le tableau est remis à null à chaque PostBack ...)

De plus, si je met en static cela veut dire que le tableau contiendra les mêmes données pour toutes les instances de la page ! Ce qui veut dire que tous le monde aura les mêmes données.

Je me trompe ou pas ?

Alex

samedi 14 avril 2007 à 13:53:48 | Re : DropDownList et DataSource d'objets

makito

as tu beaucoup de données? sinon tu peux utiliser les sessions

samedi 14 avril 2007 à 15:48:33 | Re : DropDownList et DataSource d'objets

Alexandre Marlot

Non je n'ai pas énormement de données. c'est donc une solution envisageable...

C'est pas un peu lourd pour si peu de chose ?

Il n'y a pas d'autre technique ? (meme si cela n'a rien avoir avec ma proposition initial ) ?

En tout cas merci ;)
Alex

samedi 14 avril 2007 à 19:18:25 | Re : DropDownList et DataSource d'objets

Nurgle

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,
N'oublies pas que le web fonctionne en mode déconnecté : ASP.NET ne conserve rien entre 2 postback !
Ou plutôt, il ne conserve (dans le ViewState) que le contenu de la DropDownList, donc pas tout ton objet mais juste un String.
Dans ton cas je vois deux possibilités :
- Soit tu stockes toutes tes données en Session, pour éviter une grosse requête au PostBack.

- Soit tu voies ça différement, c'est ta première requête qui ne va pas :
Lorsque tu remplies ta DropDownList, tu n'as pas besoin d'avoir derrière une collection d'objets, juste une liste des noms des personnes (si l'objet représente une personne...) ou d'un autre champ. Et ensuite au postback, là tu fais une requête pour séletionner uniquement l'objet complet correspondant à ce nom là.

C'est de loin cette deuxième solution que je conseillerais car, dans le 1er cas, tu charges une collection de pleins d'objets alors que tu ne cherches qu'à avoir une liste de noms à afficher, et qu'en plus après tu n'en affichera qu'un seul, celui qui sera choisit par la DropDownList. Ce qui te fait charger pleins d'objets en mémoire pour rien... et ensuite tous te les trimballer dans une variable de Session...

A++


Nurgle (Antoine) - MSP

samedi 14 avril 2007 à 21:52:49 | Re : DropDownList et DataSource d'objets

Alexandre Marlot

Oki merci pour cette explication détaillée et très instructive !
Je voulais etre sur que ASP.NET ne sauvegardé que le contenu de la dropdownlist et non tous mes objets !

Je vais donc a partir de maintenant réaliser tous mes dévellopements à partir de la 2eme méthodes !

Merci beaucoup pour ton aide.
Alex

Dans le même esprit j'en profite pour poser une autre question.
Imaginons que je veille affiché deux champs dans le DataTextField : Nom et prenom.
Je peux faire ca au niveau du Binding ?
Bien sur une solution c'est de faire une property au niveau de ma source de donnée qui concatene le nom et le prenom ...

Mais si on veut faire du N-Tiers, logiquement c'est le role de la GUI :)

Enco


samedi 14 avril 2007 à 23:02:13 | Re : DropDownList et DataSource d'objets

Nurgle

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
De rien

Pour ton autre question, effectivement la DropDownList ne prend en paramètre qu'un seul champ...
C'est là que les types anonymes seraient bien utiles, mais bon... il faudra attendre C# 3 pour ça
Je vois 3 solutions :

- Soit tu ne veux pas modifier tes classes métiers, ce qui est effectivement le plus sage , dans ce cas crée une nouvelle List<String> et fait une boucle sur ta collection d'objet, et ajoute pour chaque objet un String contenant Nom + Prénom, et tu bind cette liste à la DropDownList.

- Soit tu peux modifier ta classe métier, dans ce cas effectivement, rajouter une propriété fonctionnerait.

- Sinon, il y a une ruse  : Overrider le .ToString() pour le faire renvoyer Nom + Prénom, et ensuite tu laisses DataTextField vide, et je pense (à vérifier, mais je suis presque sûr) qu'il va ainsi appeller .ToString() sur tes objets, ne sachant pas quoi en faire
(C'est toujours pratique, surtout que tu peux réutiliser ce .ToString() autre part pour afficher directement Nom + Prénom, sans avoir de propriété supplémentaire... De plus Visual Studio, si jamais tu vois un jour un de tes objets en pas à pas ou en mode débug, t'affichera directement le Nom + Prénom, plutôt que le type de l'objet, c'est toujours pratique)

Mais bon, c'est vrai... la méthode la plus respectueuse du n-tiers reste la première ;)



Nurgle (Antoine) - MSP

samedi 14 avril 2007 à 23:38:09 | Re : DropDownList et DataSource d'objets

Alexandre Marlot

Merci encore une fois pour cette explication pationnante :)

De loin la solution 1 est la meilleur ! Mais très fastidieuse :( Ca fait redéclarer des variables ... refaire des parcours de boucle ... c'est pas terrible ... J'aime bien les choses carrées ;)
Et puis ma boite me donne pas des années pour faire mes programmes lol

c'est vrai que l'astuce du toString () est pas bete mais c'est un peu du bidouillage lol ...

Bref sur ce point précis .NET est pas terrible :) JAVA en architecture J2EE on peux faire ce genre de truc facilement (sans dataBinding forcement !)

Il aurait pu prévoir ce cas chez Microsoft quand meme loool c'est bidon comme truc lol ...

Bref je vais réfléchir à tous ca pendant la fin de mon week-end lol :)

En tous les cas tu as l'air de bien connaitre le sujet et les architectures N-Tiers !
MSP Powa :))))

Alex
PS : Je n'hésiterai pas à reposter des questions sur .NET (plus du coté architecture N-tiers :))

dimanche 15 avril 2007 à 12:43:44 | Re : DropDownList et DataSource d'objets

Nurgle

Membre Club Administrateur CodeS-SourceS
Je cite quand même une dernière possibilité :
Ne pas utiliser le DataBinding ! Tu fais une boucle sur tes objets, et ajoute pour chaque item un Item dans la DropDownList qui contiendra Nom + Prénom...
(J'étais tellement dans le problème du DataBinding que j'ai pas eu l'idée de faire sans...)
Cette solution là me parait de loin la plus simple à mettre en place.

PS : n'hésite pas à poser des questions, on est là pour ça ^^



Nurgle (Antoine) - MSP


1 2

Cette discussion est classé dans : objet, dropdownlist, collection, datasource, objets


Répondre à ce message

Sujets en rapport avec ce message

Récupération d'objet Javascript [ par Ekik ] Bonjour,Est-il possible de récupérer en ASP des objets javascript comme des tableaux, des objets,... qui proviennent d'une page quelquonque, Merci!Céd recuperer le nom des champs d'un form dynamique [ par Kashiko ] Je propose le choix de recherches d'objet selon l'objet en question, ou le nom de son possesseur.J'ai dan une table la liste des objets. Je propose un Gridview, objectdatasource et relationnel [ par lbnetwork ] Bonjour, je suis entrain de créer des objets pa rapport à un mon modèle relationnel. Le problème est que mes objets contiennent des proriétés qui fo DropdownList vide [ par cbu ] Bonjour,j'utilise une dropdownlist qui me retourne une liste de Pays. Je le crée avec l'assistant, tout se passe pour le mieux, il me crée mon DataSou scripts et objets SVG [ par Squall____ ] Bonjour à tous, J'ai vraiment besoin d'aide. Je dois développer une application web utilisant le SVG et je me dois être capabkle de faire communiq Binding d'un objet ou collections d'objets (ASP.NET / C#) [ par CToph ] Bonjour,   Je cherche un moyen de réaliser une liaison d'objet ( Editor >> Collection d'objets de type différent... [ par Bubuss ] Bon voilà, j'ai plusieur objets de types différents et j'aurai souhaité pouvoir créer une propriété sur mon Control à la manière de la propriété Colum DropDownList + Datasource (Bind avec une valeur null possible) [ par cfeltzsni ] Bonjour, j'ai un problème avec l'utilisation des DropDownList dans un formulaire. Pour simplifier les explications voici une partie du code : <asp:Sql Proc Stock - DataSource [ par cbu ] Bonjour,peut on passer une proc Stock à un datasource ?Si oui comment ?J'essaye ce genre de code mais ca passe pos ..             Dim lconSQL As New S Probléme avec DropDownList [ par tafamilk ] Bonjour,j'ai un souci avec 3 DropDownList, ils sont remplies à partir d'une base de données à l'aide d'un datareader et ils sont chargés dans le FormL


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,218 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.