Программное добавление столбцов в представления списка Sharepoint - PullRequest
2 голосов
/ 27 октября 2010

Для проекта, над которым я работаю, я пытаюсь сделать следующее.

Существует среда 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. Кто-нибудь знает как это сделать? Кто-нибудь еще читает эту ветку?

1 Ответ

2 голосов
/ 27 октября 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...