Последние несколько дней я бился головой об стену на этой стене.У меня есть довольно простое требование, но я не вижу, как это может быть достигнуто с помощью изолированного решения.Я в депрессии, потому что думаю, что это критическое ограничение, которое также вызовет у меня горе в будущих решениях.
Вот сценарий.
У меня есть существующий сайт, и я хочу иметь возможность активировать функцию, а затем, как часть этой активации, удалить веб-частина некоторые конкретные страницы.В моем случае я хочу иметь возможность поместить его на страницу списка «AllItems.aspx», но у меня также возникают проблемы при добавлении его на домашнюю страницу default.aspx.Я был бы счастлив в любом случае.
Примечание. Я хочу иметь возможность активировать это на существующем сайте, я не хочу создавать новое определение сайта.
Вот что я пробовал:
Приемник функций: нет.Вы не можете использовать класс SPLimitedWebPartManager, а класс SPWebPartManager работает только в контексте страницы, на которой он создан.Так что, в сущности, вы не можете сделать это в коде.
Модуль XML: Я думаю, что это наиболее вероятный путь продвижения вперед, однако, похоже, он всегда хочет предоставить файл сайту.Например, если я хочу добавить веб-часть на домашнюю страницу (default.aspx), то, похоже, не существует способа просто получить ссылку на страницу, она всегда хочетперезаписать его новым файлом.Но я не хочу этого делать, я просто хочу добавить веб-часть на существующую страницу.Посмотрите мои элементы XML ниже, я попробовал различные комбинации «IgnoreIfAlreadyExists», удалив атрибут Path и установив его пустым.
Делегирование: не разрешено в песочнице.
Я действительно хочу добавить веб-часть к «AllItems.aspx»."в форме списка, поэтому я также попытался добавить веб-часть через файл SCHEMA.XML, как описано здесь: Добавить веб-часть через SCHEMA.XML , но это тоже не сработало.Я должен быть в состоянии сделать это, более жестко настраивая определение списка, но это кажется немного чрезмерным, и я неохотно делаю это, прежде чем исключить другие варианты.
Итак, единственный аккуратный способ, которым я могу видеть сквозь него, - это какая-то страница "Конфигурация", которая затем делает это через веб-службы.Но это боль, когда пользователь «Активирует» функцию, а затем снова «Активирует» на моей странице конфигурации.
В любом случае, может быть, я просто упускаю что-то очевидное.Прошло немного времени между XML возиться на SharePoint для меня, и это мое первое решение Sandbox.Очень надеюсь, что кто-то еще сломал эту гайку.
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Pages">
<File Path="" Url="default.aspx">
<AllUsersWebPart WebPartZoneID="Left" WebPartOrder="1">
<![CDATA[
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" xmlns:iwp="http://schemas.microsoft.com/WebPart/v2/Image">
<Assembly>(Assembly), Version=1.0.0.0, Culture=neutral, PublicKeyToken=12baeb5f1600543c</Assembly>
<TypeName>(Typename)</TypeName>
<FrameType>None</FrameType>
<Title>ListAnnouncement</Title>
</WebPart>
]]>
</AllUsersWebPart>
</File>
</Module>
</Elements>