2009-10-01 4 views
0

J'ai une base de données avec deux tables, ProductLine et Fournisseur. ProductLine contient la clé étrangère SupplierId, tandis que le fournisseur a un champ "Name".Afficher une propriété d'une entité plusieurs-à-un sur une grille

Tableau ProductLine: ProductLineId (PK), Nom, SupplierID (FK), etc.

Tableau fournisseur: SupplierID (PK), etc. Nom

Dans mon programme je deux classes, ProductLine et fournisseur , dont ProductLine a le membre "Supplier SupplierId". Ce membre est mis en correspondance de la façon suivante dans ProductLine.hbm.xml (mon NHibernate-mapping pour ProductLine):

<many-to-one name="SupplierId" class="Supplier"/> 

Dans mon site Web, je veux un GridView pour afficher les noms de tous productlines et fournisseurs associés. Pour cette raison, j'ai construit une méthode GetAllProductLines() et l'a lié au gridview. Furtherly, j'attaché les zones de données suivantes au gridview:

<asp:BoundField DataField="Name" HeaderText="Name" /> 

<asp:BoundField DataField="SupplierId" HeaderText="Supplier" /> 

Les GridView affiche:

Nom: xy (correct)

Fournisseur: [Namespace] .Supplier

Chose faux? Comment puis-je obtenir le nom des fournisseurs? S'il vous plaît demander des informations plus détaillées si cela ne suffit pas.

MG, J. Carl

Répondre

0

Ok, je pouvais résoudre le problème à l'aide d'un bon exemple.

Dans la classe fournisseur, je dois remplacer le ToString() - biens dont la façon suivante:

public override string ToString() 
    { 
     return this.Name; 
    } 

De cette façon, la méthode GetAllProductLines me mains sur le nom du fournisseur.

0

Si vous utilisez

<many-to-one name="SupplierId" class="Supplier"/> 

Vous voulez avoir ID fournisseur - pas une entité. Si vous avez une entité que vous devez utiliser

Supplier.SupplierId 

champ

+0

Bonjour, pourriez-vous aller plus en détail? Comment devrais-je changer le code? MG – AGuyCalledGerald

Questions connexes