Вопрос

Вот проблема:с помощью SPD легко изменить свойства, чтобы пользователи не могли закрывать/сворачивать веб-части из зоны wp:

Свойства редактирования webpartzone http://img34.imageshack.us/img34/3389/webpartzoneedit.png

Как мы можем сделать это в коде?У меня на сайте более 30 страниц веб-частей aspx, я хочу иметь возможность сделать это, чтобы никто не мог изменять свойства веб-частей (закрывать, удалять их и т. д.).

Единственное, что я нашел, это ссылку: Spwebpartzonetools.

Дополнительную информацию о SDK можно найти по адресу: wss 3.0 SDK, во втором важном абзаце написано:

Несмотря на то, что вы можете добавить веб -части на дисплей, редактирование и новые формы для элементов списка (dispform.aspx, editform.aspx и newform.aspx), это не рекомендуется или не поддерживается в Sharepoint Services Windows.Поддерживается добавление веб -частей для перечисления страниц просмотра (allitems.aspx).

Так что это моя ошибка, которую я хочу исправить :).Я нарушил это правило.Мою проблему можно решить в SPD, но я не знаю, можно ли это исправить в коде.

Ошибка была «вдохновлена» одним из потрясающих 40 шаблонов: BudgetingTrackingMultipleProjects.wsp.В списке проектов в DispForm.aspx Microsoft добавляет дополнительные веб-части для создания основной формы.

Это было полезно?

Решение

Я решил свою проблему следующим образом:если вы откроете DispForm.aspx в SPD и измените свойства зоны веб-части, то в исходном коде (aspx) мы увидим эту строку:

 <WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main" allowlayoutchange="false" allowpersonalization="false" allowcustomization="false">

Итак, я создал простое консольное приложение, которое посещает каждый список, получает URL-адрес его DispForm.aspx и открывает его как обычный текстовый файл.Поэтому я не использую какой-либо API или что-то еще, просто SPWeb.GetFile(строка) - чтобы получить SPFile и SPWeb.GetFileAsString(url) чтобы получить содержимое aspx в виде строки.Затем я добавляю атрибуты (РазрешитьLayoutchange / разрешить персонализацию / разрешить настройку) в строке, представленной выше, используя только методы поиска и замены строк.

Затем сохраните содержимое обратно в файл aspx с помощью SPFile.SaveBinary().Вот и все, в следующий раз, когда DispForm.aspx запросит вклад.оттуда пользователь ничего не может сделать с веб-частями.Итак, это мой метод изменения свойств зоны веб-части.Я так жду других решений.

Другие советы

У вас должна быть возможность установить эти свойства после подготовки веб-частей (то есть, если вы не сделали, как сказал Крис, и не определили это в манифесте веб-части), перебирая веб-части в SPLimitedWebPartManager (остерегайтесь утечка) на каждой странице и установите свойства AllowClose, AllowHide, AllowMinimize и т. д.

HTH Anders Rask

Вы также можете установить это значение для элемента управления WebPartZone (в коде или в aspx).Используйте свойство LockLayout, например, так:

<WebPartPages:WebPartZone LockLayout="true" runat="server"...>...</...>

/WW

Вам нужно сделать это в коде?Если ваше требование состоит в том, чтобы просто запретить пользователям вносить эти изменения в ваши веб-части, это обычно решается путем предоставления веб-части свойств, которые определяют такое поведение, например:

   <webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
     <metaData>
       <type name="xxxxx.SharePoint.Common.WebParts.SiteDirectoryWebPartWrapper,
 xxxxxx.SharePoint.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxx" />
       <importErrorMessage>Cannot import this Web Part.</importErrorMessage>
     </metaData>
     <data>
       <properties>
         <property name="AllowZoneChange" type="bool">False</property>
         <property name="AllowHide" type="bool">False</property>
         <property name="AllowMinimize" type="bool">False</property>
         <property name="AllowClose" type="bool">False</property>
         <property name="AllowEdit" type="bool">True</property>
         <property name="AllowConnect" type="bool">False</property>
         <property name="ExportMode" type="exportmode">All</property>
         <property name="Hidden" type="bool">False</property>
         <property name="TitleUrl" type="string" />
         <property name="Description" type="string">Displays a list of sites
 for the current area (e.g. 'teams') in a treeview. </property>
         <property name="Title" type="string">xxxxx Site Directory
 Web Part</property>
       </properties>
     </data>   
    </webPart> 
</webParts>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top