Для проекта, над которым я работаю, я пытаюсь сделать следующее.
Существует среда Sharepoint 2010 с несколькими пользовательскими списками, созданными в Visual Studio. Я добавляю к ним некоторые поля, используя фоновый код в функции FeatureActivation в EventReceiver.
То, что я делаю, - это добавление поля поиска в список Sharepoint и установка свойств, позволяющих ему искать значения из другого списка, который я добавляю на сайт Sharepoint.
Однако я не могу найти функцию для добавления ее в одно из представлений. Я попытался изменить Schema Xml, но не могу найти функцию для повторной вставки ее в Список, и при использовании файла Xml из View я не могу заставить его работать.
Есть ли простой способ программно добавить поле в представление? Это помогло бы мне, так как, кажется, нет способа сделать это правильно.
Это также может быть решено, если кто-то может объяснить мой другой вопрос, который у меня есть.
Я хотел бы знать, как можно создать поля «Уточняющий запрос» в XML-файле схемы. У меня есть пользовательский тип контента и пользовательские поля, и в настоящее время я пытаюсь найти поле Naam в списке Intermediairs. (Этот также создается при развертывании этого решения). При поиске в Google мне кажется, что здесь нужно использовать имя / GUID экземпляра списка, но я заранее не знаю GUID экземпляра списка.
<Field ID="{7CC49D9D-F6F5-4A4A-851F-3152AAAAB158}" Type="Lookup"
List="Intermediairs" Name="IntermediairLookup" DisplayName="Intermediair"
StaticName="IntermediairLookup" Group="Onboarding" ShowField="Naam" />
Вы должны знать, что этот код работает:
SPWeb web = null;
SPSite site = null;
if (properties.Feature.Parent is SPWeb)
{
web = properties.Feature.Parent as SPWeb;
site = web.Site;
}
if (properties.Feature.Parent is SPSite)
{
site = properties.Feature.Parent as SPSite;
web = site.RootWeb;
}
web.AllowUnsafeUpdates = true;
SPList changeList = web.Lists.TryGetList("Onboarding");
SPList sourceList = web.Lists.TryGetList("Intermediairs");
if (changeList != null && sourceList != null)
{
changeList.Fields.Delete("IntermediairLookup");
var PrimaryColumnStr = changeList.Fields.AddLookup("Intermediair", sourceList.ID, true);
var PrimaryColumn = changeList.Fields.GetFieldByInternalName(PrimaryColumnStr) as SPFieldLookup;
PrimaryColumn.LookupField = sourceList.Fields["Naam"].InternalName;
PrimaryColumn.Update();
}
Но да. Я не могу понять, как сделать это в форме XML. У кого-нибудь есть идеи? Решение любого из этих вопросов решило бы мою основную проблему.
Привет,
Маты
РЕДАКТИРОВАТЬ: Ну, теперь вопрос был дан ответ, еще раз спасибо!
Хотя одна вещь. Мне бы очень хотелось узнать в какой-то момент, как сделать что-то подобное в XML / CAML. Кто-нибудь знает как это сделать? Кто-нибудь еще читает эту ветку?