2009-03-24 22 views
1

Мне нужно поле выбора (в столбце сайта) для ссылки на список, который я импортирую в sharepoint. Этот список очень редко обновляется, чтобы добавить дополнительные варианты. Как мне создать этот столбец? Программный?Поле выбора Sharepoint

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

ответ

6

Вот код, который добавит поле поиска к существующему типу содержимого.

Если вы используете определения списка, это единственный способ включить поле поиска. Он не может быть добавлен в 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); 
     } 
    } 
} 
0

Похоже, столбец Lookup - это то, что вы ищете. Сначала вам нужно будет импортировать список, а затем создать поиск в качестве столбца сайта.

+0

Ну см это поиск для каждого ... просто пытаюсь выяснить, как его кодировать ... Я предполагаю, что мне нужно сначала импортировать список в качестве нового типа контента. Затем создайте столбец поиска (с несколькими) для типа содержимого?!? – user38734

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