2010-11-22 9 views
0

Salut J'ai besoin d'afficher dans DropDownList une liste des "Utilisateurs" appartenant à un ROLE spécifique.GetUsersInRole DataSource pour DropDownList

Ceci est mon code:

 // Find DropDownList 
     DropDownList myUserList = (DropDownList)uxInsertAuthorInput.FindControl("uxUserListSelector"); 
     // Bind data to DropDownList 
     myUserList.DataSource = Roles.GetUsersInRole("CMS-AUTHOR"); 
     myUserList.DataBind(); 
     myUserList.DataTextField = "UserName"; 

Mon problème est quand un visiteur sélectionnez un élément dans DropDownList. La valeur réelle transmise est le "UserName" et non le "UserId".

Je dois utiliser la valeur "UserId" lorsqu'un visiteur sélectionne un élément de DropDownList.

Comment le faire? Merci pour votre aide

Répondre

2

Vous pouvez prendre le nom d'utilisateur sélectionné et appeler Membership.GetUser. Vous pouvez ensuite obtenir l'ID utilisateur en utilisant la propriété MembershipUser.ProviderUserKey.

Bien sûr, si l'objectif était d'obtenir MembershipUser à partir de l'ID de l'utilisateur, l'utilisateur l'appelait GetUser.

+0

C'est la bonne réponse, bien que j'utiliserais 'Membership.GetUser (nom d'utilisateur) y' au lieu de Membership.FindUsersByName et trouver juste l'ID pour l'élément sélectionné. – Greg

+1

@Greg, merci, mis à jour avec votre suggestion. –

+0

Je suis d'accord avec l'utilisation de Membership.GetUser (nom d'utilisateur) – GibboK

0

Revenez à votre code .aspx (ou le conçu si vous avez utilisé WYSIWYG). Changez la requête dans la source de données SQL. Je l'ai fait de manière similaire en utilisant:

 <asp:SqlDataSource ID="sqlUsersInRole0" runat="server" ConnectionString="<%$ ConnectionStrings:NCLWebConnectionString %>" 
      SelectCommand="GetUsersInRole" SelectCommandType="StoredProcedure"> 
      <SelectParameters> 
       <asp:Parameter DefaultValue="MaintenanceWorkers" Name="rolename" Type="String" /> 
      </SelectParameters> 
     </asp:SqlDataSource> 

Je suppose que cela peut également être fait par programme, mais pourquoi s'embêter?

+0

merci pour votre réponse – GibboK