Идентификатор зоны SharePoint WebPart - PullRequest
0 голосов
/ 08 ноября 2018

Я использую SharePoint онлайн.
Я хочу использовать этот CSOM-код для добавления веб-части на страницу:

SP.File oFile = _web.GetFileByUrl(SiteUrl + "/SitePages/" + pageName);
oFile.CheckOut();
LimitedWebPartManager limitedWebPartManager = oFile.GetLimitedWebPartManager(PersonalizationScope.Shared);
var importedWebPart = limitedWebPartManager.ImportWebPart(webPartSchemaXml);
var webPart = limitedWebPartManager.AddWebPart(importedWebPart.WebPart, zoneid, zoneIndex);
oFile.Update();
await SiteCtx.ExecuteQueryAsync();
oFile.CheckIn(String.Empty, CheckinType.MinorCheckIn);

Проблема в том, как назначить правильные значения строковой переменной zoneid, имя зоны веб-части, в которую нужно добавить веб-часть.

Когда я запускаю этот код, ничего не происходит!
(он не добавляет WebPart на страницу, и я подозреваю, что он связан с неправильным ID зоны).

Я читал различные посты, начиная от доступа к коду позади страницы .aspx, пытаясь найти WebPartZone, доступа к классу WebPartManager (в котором должен быть указан ZoneId, но я не знаю, как его получить, с тех пор я использую класс LimitedWebPartManager).

Я пробовал различные значения для zoneId, но на данный момент ни одно из них не работает:

  • Зона 1 (только предположение!)
  • Зона 2 (я вижу ее на правой вкладке при ручном редактировании веб-части через страницу редактирования)
  • Body ( с этим код работал несколько дней назад! , но теперь он больше не работает)
  • Заголовок
  • левый
  • Bottom

Каков правильный метод findind zoneId?

EDIT

Страница - это домашняя страница, я где-то читал, что это вики-страница , так что, возможно, у нее разные ZoneId.

1 Ответ

0 голосов
/ 08 ноября 2018

ZoneID могут отличаться в зависимости от макета страницы, но обычно в готовых макетах SharePoint используются следующие идентификаторы для зон веб-частей:

  • TitleBar
  • Заголовок
  • LeftColumn
  • MiddleColumn
  • RightColumn
  • Footer

Убедитесь, что после импорта веб-части вы вызываете метод update() для вашего файлового объекта и метод executeQueryAsync() в своем контексте - последняя функция особенно отвечает за отправку запроса на сервер и применение ваших изменений.

Вот хорошая статья о программном добавлении веб-частей на страницы: Как программно добавить клиентскую веб-часть на страницу SharePoint

...