Вот код, который добавит поле поиска к существующему типу содержимого.
Если вы используете определения списка, это единственный способ включить поле поиска. Он не может быть добавлен в CAML определения списка, потому что требуется указатель для списка поиска, и это неизвестно перед началом работы. SharePoint автоматически генерирует этот Guid при создании списка.
Таким образом, вы должны сначала создать столбец подстановок внутри корневого SPWeb из SPSite
private void CreateLookup(SPWeb web, SPList lookupList, String lookupField, String fieldName, String fieldGroup, bool allowMultiLookup)
{
using (SPSite site = web.Site)
{
using (SPWeb rootWeb = site.RootWeb)
{
rootWeb.Fields.AddLookup(fieldName, lookupList.ID, web.ID, false);
SPFieldLookup fieldLookup = (SPFieldLookup)rootWeb.Fields[fieldName];
if (fieldLookup == null) return;
fieldLookup.AllowMultipleValues = allowMultiLookup;
fieldLookup.LookupField = lookupField;
fieldLookup.Group = fieldGroup;
fieldLookup.Title = fieldName;
fieldLookup.Update(true);
}
}
}
И тогда вам нужно добавить это поле в exsisting типа содержимого
private void AddLookupToContentType(SPWeb web, String fieldName, String contentTypeName)
{
using (SPSite site = web.Site)
{
using (SPWeb rootWeb = site.RootWeb)
{
SPFieldLookup lookupField = (SPFieldLookup)rootWeb.Fields[fieldName];
if (lookupField == null) return;
SPContentType riskContentType = rootWeb.ContentTypes[contentTypeName];
if (riskContentType == null) return;
riskContentType.FieldLinks.Add(new SPFieldLink(lookupField));
riskContentType.Update(true);
}
}
}
Ну см это поиск для каждого ... просто пытаюсь выяснить, как его кодировать ... Я предполагаю, что мне нужно сначала импортировать список в качестве нового типа контента. Затем создайте столбец поиска (с несколькими) для типа содержимого?!? – user38734