2009-08-27 6 views
0

Je souhaite afficher l'attribut d'une relation dans DataGridView. J'utiliser LINQ to SQL pour faire la cartographie et ont les classes suivantes:Afficher l'attribut de relation dans DataGridView

class Computer 
{ 
    public string Name; 
    public User User; 
} 

class User 
{ 
    public string Name; 
} 

-je utiliser un DataGridView pour montrer quelques lignes de l'entité Computer et veulent aussi avoir une colonne pour afficher le nom de l'utilisateur associé à cet ordinateur.

J'ai créé une source de données d'objet de la classe Computer. J'ai défini la propriété DataSource de mon BindingSource à cette source de données et lié mon DataGridView avec ce BindingSource. J'ai ajouté une colonne à mon DataGridView et défini la propriété DataPropertyName à //User.Name//, mais cela ne fonctionne pas. Quel est un bon moyen de le faire?

J'ai déjà pensé à créer une classe supplémentaire qui hérite de Computer et possède une propriété de chaîne supplémentaire qui représente le nom de l'utilisateur; mais je veux éviter cette solution.

Répondre

2
var computerUsers = from c in mydataContext.Computer 
select new { 
computerName = c.Name, 
userName = c.User.Name 
}; 

myDataGridView.datasource = computerUsers; 
myDataGridView.dataBind(); 

et dans votre appel datagridview « computerName » et « userName »

<asp:BoundField DataField="computerName" HeaderText="Computer" /> 
<asp:BoundField DataField="userName" HeaderText="User" /> 
+0

Je l'ai déjà pensé à la solution avec des classes anonymes, mais je préfère utiliser l'interface graphique de conception si possible. –

+0

ok. pouvez-vous poster votre code de grille de données et code d'objet? – krishna

+0

Quel code voulez-vous exactement? J'utilise le concepteur GUI pour positionner mes contrôles, voulez-vous coder le Designer a généré? –

Questions connexes