2009-11-03 10 views
1

Je suis évidemment encore manquant quelque chose sur la façon de lier l'élément sélectionné dans un DropDownList.DropDownList élément non sélectionné

Je mis le SelectList comme celui-ci dans un dépôt:

public SelectList GetAgencyList(System.Guid donorId, Int32 selected) 
    { 
     AgenciesDonorRepository adRepo = new AgenciesDonorRepository(); 
     List<AgenciesDonor> agencyDonors = adRepo.FindByDonorId(donorId); 

     IEnumerable<SelectListItem> ad = from a in agencyDonors 
       select new SelectListItem { 
       Text = a.Agencies.AgencyName, 
       Value = a.AgenciesDonorId.ToString() 
       }; 

     return(new SelectList(ad, "Value", "Text", (selected == 0 ? 0 : selected))); 
    } 

Ensuite, dans le contrôleur, ceci:

  ViewData["AgenciesDonorList"] = repo.GetAgencyList(donorId, ccResult.AgenciesDonors.AgenciesDonorId); 
      return View(ccResult); 

Et dans la vue, ceci:

<%=Html.DropDownList("AgenciesDonorList", (IEnumerable<SelectListItem>)ViewData["AgenciesDonorList"])%> 

Dans le débogueur juste avant de retourner View (...), je peux voir que l'élément correct est sélectionné (true) et tous les autres sont faux. Mais dans la vue, l'option de sélection ne le fait jamais, et la première fois est toujours affichée. Est-ce que cela a quelque chose à voir avec mon utilisation de int comme paramètre sélectionné?

Thx. Dale

+0

En quoi ... ASP? – Greg

+0

ASP.net MVC 1.0 – Dale

Répondre

1

Changement GetAgencyList à:

public SelectList GetAgencyList(System.Guid donorId, Int32 selected) 
{ 
    AgenciesDonorRepository adRepo = new AgenciesDonorRepository(); 
    List<AgenciesDonor> agencyDonors = adRepo.FindByDonorId(donorId); 

    var ad = from a in agencyDonors 
      select new { 
      Text = a.Agencies.AgencyName, 
      Value = a.AgenciesDonorId 
      }; 

    return(new SelectList(ad, "Value", "Text", selected)); 
} 

annonce ne doit pas être de type IEnumerable<SelectListItem>. Est-ce que AgenciesDonorId Int32?

+0

Thx. Cela semble avoir aidé. Le premier paramètre de la méthode DropDownList View a également été modifié en 'AgenciesDonorId' au lieu de AgenciesDonorList. Ensemble, ça fonctionne. – Dale

+0

Oui. "AgenciesDonorId" est le nom du champ de formulaire en cours de modification. Comme dit J.13.L, coulée ViewData ["AgenciesDonorList"] à IQueryable devrait être remplacer par , parce que vous fournissez SelectList :) – LukLed

0

Je serais d'accord avec LukLed Je ne suis pas sûr de ce que vous faites avec l'instruction: (selected == 0 ? 0 : selected) Si je passe un 0, alors il renvoie 0 et si je passe quelque chose d'autre que 0 alors il utilise cette valeur.

Editer: Oh ... je le vois. Changer la distribution:

<%=Html.DropDownList("AgenciesDonorList", (IEnumerable<SelectListItem>)ViewData["AgenciesDonorList"])%> 

Pour:

<%=Html.DropDownList("AgenciesDonorList", (SelectList)ViewData["AgenciesDonorList"])%> 
+0

Ah oui, plusieurs petits problèmes à la fin. THX. – Dale

Questions connexes