2008-10-31 9 views
0

Je travaille sur un site collègues, et il tort mis en place un gridview qui montre un TypeID au lieu du TypeName. Je veux mettre le nom réel du type, au lieu de son numéro d'identification arbitraire, comme il l'a. Je vois qu'il a deux "ObjectDataSource" sur la page - un pour Type et un pour Item. Items contient l'identifiant de TYPE de l'élément, qui se trouve dans la source de données Items. Il tire cette identification pour peupler le gridview. Je veux utiliser cet identifiant pour tirer le NOM forment l'autre source de données et placez ce nom dans le gridview pour cette colonne spécifique. Cela peut-il être fait? Puis-je utiliser deux sources de données différentes sur un gridview?Un gridview - deux sources de données?

Répondre

4

Si je comprends bien ce droit, ce que vous avez est deux sources de données qui font:

1) SELECT ID, Item, ItemTypeID FROM Item 
2) SELECT ID, ItemType FROM ItemTypes 

Et vous souhaitant le nom de l'élément et le type d'élément affiché dans la grille.

Pour répondre à votre question fondamentale si vous pouvez utiliser les deux sources sur la grille: oui. Mais ce n'est pas la façon la plus efficace d'effectuer l'opération, que vous auriez besoin de marcher la deuxième source de données pour chaque ligne dans la première.

Une meilleure façon serait de joindre les deux sources de données ensemble, et seulement un.

Modifier l'instruction SELECT pour la première datasrouce être quelque chose le long de ces lignes:

SELECT i.ID, i.Item, t.ItemType FROM Item i INNER JOIN ItemTypes t ON i.ItemTypeId = t.ID; 
+0

Merci - Je me suis un peu hors de moi-même. (bien, j'apprends je suppose) et je viens de faire une nouvelle ObjectDataSource tirée des deux tables. Quand j'ai modifié le SQL existant, j'ai eu quelques erreurs que je n'ai pas comprises. Création d'une nouvelle source de données a résolu mon problème, mais tu me as sur la bonne voie :) – Kolten

+0

Oh, je sais que l'erreur je suis arrivé - il semble que lors de l'utilisation d'un INNER JOIN pour une raison quelconque, il ne peut pas créer automatiquement l'instruction INSERT. Puisque cette instruction INSERT est référencée ailleurs, elle a été bombardée. – Kolten

Questions connexes