В SharePoint добавьте форму в существующий список в функции - PullRequest
0 голосов
/ 11 марта 2010

Мне нужно заменить форму просмотра существующего списка на сайте sharepoint. Это должно быть сделано в функции, и я не владею схемой в списке, поэтому я не могу просто обновить xml.

Моя функция добавляет файл в список elements.xml:

  <Module Name="Replacement Form" Path="" Url="Lists/ListName">
    <File Url="ReplacementDispForm.aspx" />
  </Module>

и функция обновляет форму отображения для определенного типа контента в приемнике функции активации функции:

  SPList list = web.Lists[listName];
  SPContentType type = list.ContentTypes[typeName];
  type.DisplayFormUrl = formUrl;
  type.Update();

Всё работает нормально. Проблема заключается в обновлении функции - поскольку страница содержит веб-часть, обновление и т. Д. Приводит к тому, что на странице появляется дополнительная веб-часть, - sharepoint просто добавляет определение веб-части, что означает, что при каждом развертывании добавляется +1 веб-часть.

Поэтому я пытаюсь удалить файл в коде деактивации функции, но это простые ошибки, которые невозможно удалить:

string name = "Lists/ListName/ReplacementDispForm.aspx";
SPFile file = web.GetFile(name);
file.Delete();

file.Delete - это строка с ошибками SPException «Не удалось удалить эту папку». Я не уверен, что это потому, что файл не добавляется в список правильно, или мой код удаления неверен?

Ответы [ 2 ]

0 голосов
/ 11 марта 2010

Вы также можете извлечь schema.xml из списка, даже если вы не являетесь его владельцем. Инструмент SPSource извлекает файл schema.xml из любого списка на вашем веб-сайте.

Возможно, оно того не стоит, поскольку вы, кажется, уже проделали большую часть работы по созданию этой функции и т. Д. Но в следующий раз вам нужно будет сделать что-то подобное.

0 голосов
/ 11 марта 2010

Ваш код выглядит хорошо. Недавно я сделал нечто подобное, но вместо удаления файла при деактивации я создал новую функцию, которая удалила файл, а затем снова активировал первую функцию:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    SPWeb web = properties.Feature.Parent as SPWeb;
    web.Files.Delete("Lists/ListName/ReplacementDispForm.aspx");
    web.Features.Add(new Guid("{E6E82DC3-8802-4332-BD98-0025E0A435F3}"), true);
}

Не уверен, имеет ли это какое-то значение или нет, но это, по крайней мере, показывает, что вы движетесь в правильном направлении.

Единственное, что выделяется для меня - это само положение . Возможно, в игру вступают значения по умолчанию, но вы можете явно добавить Type = "Ghostable" в элемент File.

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