2009-08-17 8 views
2

Je n'arrive pas à obtenir les éléments sélectionnés dans une liste de sélection.SelectlistItem sélectionné = vrai problème

Product product = _pr.GetProducts().ByProductID(productID).First(); 
     product.Categories.Load(); 
     ICollection<Category> allCategories = _cr.GetCategories().ToList(); 

     List<SelectListItem> Categories = (from category in allCategories 
              select 
              new SelectListItem 
              { 
               Selected = product.Categories.Contains(category), 
               Value = category.CategoryID.ToString(), 
               Text = category.Categoryname 
              }).ToList(); 

Catégories retour 4 articles, et sélectionnés est faux sur tout ....... Si je passe la souris « product.Categories » il y a 3 points là-bas, ce qui est correct .... mais de toute façon il ne marche pas se mettre à vrai.

Qu'est-ce qui pourrait ne pas fonctionner? /M

Répondre

1

La surcharge de Contains() que vous utilisez va utiliser la comparaison d'objet par défaut, qui ne correspondra exactement la même instance, sauf si vous avez Equals() et GetHashCode() remplacées. Une option consiste à créer un CategoryEqualityComparer personnalisé et le transmettre à this overload of Contains(). Ou, vous pouvez simplement joindre les catégories sur ID:

Product product = _pr.GetProducts().ByProductID(productID).First(); 
product.Categories.Load(); 
ICollection<Category> allCategories = _cr.GetCategories().ToList(); 

List<SelectListItem> Categories = (
    from category in allCategories 
    join pc in product.Categories 
     on category.CategoryID equals pc.CategoryID into j 
    select 
    new SelectListItem 
    { 
     Selected = j.Any(), 
     Value = category.CategoryID.ToString(), 
     Text = category.Categoryname 
    }).ToList(); 
+0

putain .. vous me battre de 14 secondes :) – sirrocco

0

Je vois que vous définissez 'allCategories' à une collection _cr.GetCategories - êtes-vous sûr que le produit contient des catégories de cette collection? Il semble que votre champ Catégories ne contienne aucune des catégories de produits. Pouvez-vous poster ce qu'il y a dans chaque collection?

+0

Y a-t-il une astuce facile dans Visual Studio pour faire cela? –

+0

Je ne suis pas sûr, je ne pense pas. Vous pouvez utiliser une boucle foreach() et simplement les imprimer sur la console. – shanabus

Questions connexes