2010-08-11 26 views
0

J'ai deux listes SharePoint: A & B. Liste A a une colonne où l'utilisateur peut ajouter des références multilple (affichée sous forme d'hyperliens) pour chaque entrée aux entrées BUtilisation des données de requêtes Webpart de SharePoint pour relier deux listes

A:       B: 
... | RefB | ...    Name | OtherColumns.... 
-----------------    ----------------------- 
... | B1 | ...    B1 | 
... | B2,B3 | ...    B2 | 
... | B1,B3 | ...    B3 | 

Maintenant, je veux afficher toutes les entrées de la liste B qui sont référencées par une entrée (spécifique) dans AIe: Je définis le filtre sur [Entrée 2] et le composant WebPart affiche toutes les données des entrées B2 et B3. Est-ce seulement possible?

Répondre

0

Je pense que le problème que vous avez qui ruine une partie de la façon dont je pense à la résoudre est que la colonne RefB est multi-valuée. Vous pouvez avoir un peu de plaisir à faire du filtrage avec le DataView, mais cela risque d'être désordonné rapidement, car vous essayez de diviser RefB sur la virgule et de comparer avec le tableau de valeurs qui en résulte.

Je pense que le problème pourrait être facilité en n'ayant qu'une seule valeur dans la colonne RefB.

Trois solutions me viennent à l'esprit.

  1. avoir qu'une seule valeur dans RefB par article dans le tableau A et répéter les autres champs du tableau A. Il faudrait accepter une certaine redondance des données et vous devez être prudent avec la saisie des données. La solution de base de données relationnelle normale pour résoudre votre problème de redondance de données serait d'avoir une troisième table joignant tabe A à la table B. Si vous n'êtes pas familier avec les techniques de base de données relationnelles, il existe beaucoup de tutoriels simples sur normalisation des données sur le net. Bien qu'il y ait plus de travail, cela peut mener à une solution plus propre. Soyez prudent lorsque vous essayez de truquer une base de données relationnelle dans SharePoint - ce n'est pas destiné aux données relationnelles. Il vaudrait peut-être mieux utiliser une base de données SQL. Mettez tout dans une table, même si je pense que vous avez déjà exclu celui-ci.