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:

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


nico_be

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
Lien vers le commentaire
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 !

Lien vers le commentaire
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
Lien vers le commentaire
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é).

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...