2008-10-13 29 views
3

J'ai un formulaire qui contient un contrôle GridView qui est databound à un contrôle ObjectDataSource. Plusieurs contrôles TextBox sont déjà utilisés en tant que ControlParameters pour ObjectDataSource. J'ai également un objet de données personnalisé auquel ObjectDataSource est associé {TypeName = "myDataClass"}. Les valeurs sont transmises de ObjectDataSource à myDataClass.ASP.NET - ObjectDataSource: utilisation de ListBox à sélection multiple en tant que ControlParameter

Maintenant, je dois également utiliser un ListBox à sélection multiple en tant que ControlParameter. Lorsque j'utilise le paramètre SelectedValue de ListBox, ObjectDataSource ne voit que le premier élément sélectionné dans la liste.

Voici la question: Comment puis-je obtenir toutes les valeurs ListBox à sélection multiple passées dans mon objet personnalisé "myDataClass" au lieu de seulement le premier sélectionné? D'où le ["multi-select"]

Merci pour toute aide!

Répondre

2

Les zones de liste à sélection multiple sont difficiles. Vous devez parcourir les éléments du code pour créer une liste de valeurs sélectionnées. Vous devrez donc probablement implémenter un paramètre personnalisé qui le fera pour vous.

Vous devrez peut-être vous connecter à la grille à partir de code-behind, au lieu de le faire de manière déclarative.

+0

Merci pour la réponse. Je pensais que c'était le cas. Ce que j'ai fait a été créé un contrôle utilisateur Web avec quelques propriétés personnalisées pour exposer les valeurs multiples (CSV dans mon cas) de la Listbox multi-sélection. ObjectDataSource a ensuite pu utiliser les valeurs sans problème. – M3NTA7

0

Ceci est un problème typique. La zone de liste à sélection multiple renvoie toujours la première valeur sélectionnée et non la totalité de la valeur sélectionnée. Nous devons parcourir toute la collection et vérifier chaque valeur individuelle si elle est sélectionnée ou non.