Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

nico_be

[Résolu] ListBox en ASP.NET : Plus de SetItemData

Messages recommandés

Bonsoir,

 

Je suis entrain de créer une petite application tournant en ASP.NET qui est reliée à une base de donnée. Je me sers d'un listbox pour afficher le contenu d'une table et j'aimerais que pour chaque item de la ListBox soit affecté un champ caché contenant l'ID de l'enregistrement de la table en question.

 

Avec MFC en C++ il était possible de le faire via les fonction SetItemData et GetItemData, mais en ASP.NET et C# je ne trouve pas.

 

En recherchant un peu sur Internet, j'ai vu qu'on parlait de créer sa propre classe pour contenir les données désirées et ensuite d'ajouter l'objet de cette classe en tant qu'item dans la ListBox mais la fonction permettant d'ajouter un Item ne permet que soit ajouter un String ou un objet de la classe ListItem.

 

Avez-vous une idée de la manière de procéder pour obtenir quelque chose de similaire aux fonctions SetItemData et GetItemData ?

 

Merci d'avance,

 

Nico

Modifié par nico_be

Partager ce message


Lien à poster
Partager sur d’autres sites

Si mes souvenirs sont bons tu peux ajouter un Object à une ListBox ou plus exactement à sa collection nommée Items (et il me semble que ListItem n'est pas une classe mais une interface donc tu peux faire implémenter cette interface aux objets que tu souhaites manipuler dans ta ListBox, à confirmer...)

Sinon, il semblerait que tu puisse indiquer quoi afficher dans la liste en utilisant l'attribut DisplayMember, qui doit être égal à une propriété (renvoyant un objet String) dans les objets que tu ajoutes à la collection. Par défaut c'est un ToString() qui est exécuté (ce qui explique le problème si on met autre chose que des String dans la collection)...

 

-- edit --

Après vérification, ListItem est une classe "finale" et non une interface. Dommage !

Partager ce message


Lien à poster
Partager sur d’autres sites

Bonjour Kewlcat et merci pour ta réponse.

 

Apparemment ListItem est une classe verouillée, on n'a pas le droit de créer une classe fille, lorsque j'essaye il est indiqué : "cannot derive from sealed type "System.Web.UI.Webcontrols.ListItem"".

Concernant l'attribut DisplayMember pourrait-tu détailler un peu plus svp, j'ai regardé mais je ne vois pas quelle méthode utiliser pour y accéder. J'ai un peu cherché sur Internet, on parle en effet de cette propriété dans la classe "System.Windows.Forms.ListBox" mais je n'ai pas trouvé pour "System.Web.UI.WebControls.ListBox".

 

Merci,

 

Nico

Modifié par nico_be

Partager ce message


Lien à poster
Partager sur d’autres sites

Tu as raison, ListItem est une classe et n'est pas dérivable. :-/

 

Je ne retrouve plus la page qui parlait de DisplayMember, et encore plus étrange cet attribut semble absent de ListBox (alors que le site que j'avais consulté parlait bel et bien d'asp.net)...

Bref.

En regardant la composition des objets ListItem, il semblerait que tu n'aies pas d'autre choix que de parcourir ta collection et d'en extraire une collection de ListItem (construite "à la main") en leur valorisant les attributs Value et Text (Text étant ce qui sera affiché dans la liste, et Value ce qui sera récupéré par le serveur une fois le formulaire posté).

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant

  • En ligne récemment   0 membre est en ligne

    Aucun utilisateur enregistré regarde cette page.

×