2010-03-25 6 views
0

J'ai ajouté un champ SPFieldLookup à une liste par programmation. Lorsque j'ai vérifié ma vue de liste, j'ai trouvé que le champ de recherche est comme si je l'avais ajouté à partir de l'inerface de l'utilisateur sans spécifier qu'il est lié à l'élément.Ajout de SPFieldLookup à une liste par programmation?

Existe-t-il une méthode pour forcer le lien de recherche à l'élément par programme?

+0

Ok je l'ai trouvé Il ne peut pas être acheived programme bien qu'il sera disponible en sharepoint 2010 vous pouvez le faire à partir de l'interface sharepoint grâce –

Répondre

1

Si vous mettez à disposition à la fois la liste dans laquelle se trouve le champ SPFieldLookup et la liste cible, vous rencontrerez un problème. Parce que le champ SPFieldLookup doit affecter la liste cible par son GUID, qui est créé dynamiquement lorsque la fonctionnalité est activée. Et vous ne pouvez pas définir cette valeur dans votre définition de champ, car elle n'existe pas encore.

La solution à ce problème consiste à mettre à disposition à la fois la liste "source" et la liste cible normalement, à l'exception du champ SPFieldLookup dans la liste source.
Ensuite, dans l'événement activé par fonctionnalité, vous ajoutez ce champ de recherche par programme, ce qui peut maintenant être fait puisque vous avez (ou au moins pouvez trouver) le GUID de la liste cible.

-1

Avez-vous rempli toutes les propriétés nécessaires (LookupField, LookupWebId et peut-être aussi LookupList) et Update() le champ après?

Peut-être http://www.alexbruett.net/?p=153 aiderai

+0

Le lien est mort si cette réponse est non utile. C'est pourquoi sa bonne pratique consiste à résumer les points clés lors de la liaison hors site. – Amicable

0

Ce bel extrait que j'ai vu et partager Supposons que nous avons deux listes aList et bList déjà créé. L'exigence est de créer une colonne de recherche dans aList qui recherchera les valeurs dans bList.

SPList aList = web.Lists["aList"]; 
SPList bList = web.Lists["bList"]; 
aList.Fields.AddLookup("Lookup", bList.ID, false); 
SPFieldLookup fldLookup = aList.Fields["Lookup"] as SPFieldLookup; 
fldLookup.LookupField = bList.Fields[SPBuiltInFieldId.Title].InternalName; 
fldLookup.Update(); 
Questions connexes