2010-03-18 9 views
0

J'essaye de lier le rôle d'un utilisateur sélectionné à une liste déroulante. Le but de ceci est de pouvoir changer le rôle de cet utilisateur.Lier un rôle d'utilisateur à une liste déroulante?

Je tente cela à l'intérieur d'un formulaire lié à un linqdatasource qui contient une ligne du aspnet_User table.

La liste déroulante est connectée à une linqdatasource de tous les rôles du aspnet_Roles table (with DataValueField="RoleID", DataTextField="RoleName").

Je pensais que ce serait possible avec quelque chose comme:

SelectedValue='<%# Bind("aspnet_UsersInRole[0].aspnet_Role.RoleID") %>' 

Mais cela jette une exception analyseur, sur l'appel de liaison ne sont pas correctement formaté.

Les rôles sont là, ils apparaissent lorsque je retire la SelectedValue

me point Quelqu'un peut-il dans la bonne direction?

Répondre

0

Résolu - J'ai fini par faire juste une méthode dans la codebehind qui a renvoyé le RoleId, comme ceci:

public Guid GetRoleID(Guid userID) { 
    DBDataContext db = new DBDataContext(); 
    aspnet_User user = db.aspnet_Users.SingleOrDefault(o => o.UserId == userID); 
    return user.aspnet_UsersInRoles[0].aspnet_Role.RoleId; 
} 

puis dans le balisage do:

SelectedValue='<%# GetRoleID((Guid)Eval("UserID")) %>' 
0

Si vous liez la table aspnet_roles à la liste déroulante, alors pourquoi l'exemple de code utilise-t-il aspnet_usersinrole? Au lieu de cela, si vous voulez lier à l'objet aspnet_role, faire:

SelectedValue='<%# Bind("RoleID") %>' 

au lieu; cela va se connecter à la bonne propriété. Si vous souhaitez lier aspnet_usersinrole, si possible dans la source LINQDataSource, à partir de la résolution aspnet_usersinrole, effectuez une opération de sélection pour sélectionner l'objet aspnet_role à la place.

+0

Désolé, aurait dû être plus clair à ce sujet - la liste déroulante est liée aux rôles pour obtenir tous les rôles, l'appel Bind dans selectedvalue, est de lier le rôle de l'utilisateur en cours d'édition à la liste déroulante (donc, si l'utilisateur édité est un "Admin" alors le rôle "Admin" sera sélectionné par défaut dans la liste déroulante) – Dynde