2010-03-25 3 views
0

Я добавил поле SPFieldLookup в список программным способом.Добавление SPFieldLookup в список программно?

Когда я проверил свой список, я обнаружил, что поле поиска выглядит так, как если бы я добавил его из пользовательского интерфейса, не указав, что он связан с элементом.

Есть ли способ принудительно привязать поле lookupfield к элементу программно?

+0

Ok Я нашел Это не может быть достигнуто программно, хотя это будет доступны в SharePoint 2010 вы можете сделать это с помощью интерфейса Sharepoint благодаря –

ответ

1

Если вы предоставляете как список, в котором находится поле SPFieldLookup, так и целевой список, у вас возникнет проблема. Поскольку поле SPFieldLookup должно назначать целевой список своим GUID, который создается динамически, когда функция активирована. И вы не можете определить это значение в своем определении поля, так как оно еще не существует.

Решение этой проблемы предусматривает как исходный список, так и целевой список, за исключением поля SPFieldLookup в списке источников.
Затем в активированном событии вы добавляете это поле поиска программно, что теперь можно сделать, поскольку вы (или, по крайней мере, можете узнать) GUID для целевого списка.

-1

Вы заполнили все необходимые свойства (LookupField, LookupWebId и, возможно, LookupList) и Update() после этого?

Возможно http://www.alexbruett.net/?p=153 поможет

+0

Ссылка мертва, так что этот ответ не полезно. Вот почему его хорошая практика заключается в том, чтобы обобщить ключевые моменты при соединении за пределами площадки. – Amicable

0

Это хороший сниппет я видел и хотел бы поделиться Допустим, у нас есть два списка ALIST и Blist уже создан. Требование - создать столбец поиска в aList, который будет искать значения в 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(); 

 Смежные вопросы

  • Нет связанных вопросов^_^