2010-08-04 3 views
0

J'ai trois classes (domaine, rôle et utilisateur). Domaine et le rôle sont des propriétés de la classe utilisateur, comme ceci:Liaison d'objets à un Gridview

public int UserID { get; set; } 
    public string UserName { get; set; } 
    public Domain Domain { get; set; } 
    public Role Role { get; set; } 
    public bool Active { get; set; } 

domaine et le rôle ont juste une propriété d'identité et une propriété Name.

Je voudrais associer une liste d'utilisateurs à ma vue de grille, mais en affichant le nom de domaine. À l'heure actuelle, j'ai mes champs liés comme ceci:

<asp:BoundField DataField="Domain.DomainName" SortExpression="UserDomain" ReadOnly="True" HeaderText="User Domain" /> 

Mais ce isnt travail, ce qui donne l'erreur de mise en jachère: DataBinding: 'Yasur.Business.Entities.User' does not contain a property with the name 'DomainName'.

Quelle est la meilleure façon de le faire?

Pedro Dusso

+0

je ne pense pas que provoque l'erreur, s'il vous plaît poster le code de l'utilisateur ' entité –

+0

mais je l'ai déjà fait, c'est tout ma classe User ... juste raté la classe publique User {...} –

+0

Post le code où vous lier à la source de données Gridview –

Répondre

0

Je ne pense pas que vous serez en mesure de faire la liaison de données bidirectionnelle avec un objet comme celui-ci. Vous pouvez « eval » les données si vous utilisez un TemplateField avec la syntaxe comme celui-ci (non testé):

<asp:TemplateField> 
<ItemTemplate> 
    <asp:Label ID="Label1" runat="server" Text='<%# ((Domain)Eval("Domain")).DomainName %>' /> 
</ItemTemplate> 

Questions connexes