2016-03-02 8 views
1

У меня есть функция на моем сайте SharePoint, которая добавляет представления в список, когда эта функция активирована.Запрограммировать параметры просмотра для каждого местоположения

В меню настроек списка SharePoint у нас есть ссылка, которая говорит «Настройки отображения по местоположению» (или «Настройки отображения на локальном уровне» на английском языке). Когда я активирую свою функцию, все мои представления находятся в правом столбце «Представления, доступные в этом месте». Но для некоторых просмотров я хочу, чтобы они находились в левом столбце, «виды скрыты в этом месте».

Я попытался установить параметр «Скрытый» в true для моих соответствующих представлений, но это привело к тому, что мои взгляды полностью исчезли с страницы настроек вида для каждого местоположения.

Можно ли управлять просмотрами/скрытыми видами в определенных местах на C# или в Powershell?

ответ

0

Место в этом примере относится к папке в вашем списке (или к корневой папке, если нет других папок).

Чтобы просмотреть, какие виды отображаются или скрыты в определенной папке, обратитесь к свойству client_MOSS_MetadataNavigationSettings этой папки.

Это свойство будет строкой XML, содержащей элемент <ViewSettings>, внутри которого вы увидите <View> элементы для любых видов, которые были настроены со специальными настройками для каждого местоположения. Атрибут Index узла <View> будет строковым представлением отрицательного числа, если представление установлено, что оно скрыто от этого местоположения.

По умолчанию новый вид будет отображаться во всех папках, но не будет иметь записи в коллекции <ViewSettings>; если вы хотите скрыть его, вам нужно создать новый XML-элемент и вставить его в свойство.

Вот пример в Powershell сокрытия вид из корневой папки:

$viewName = "Secret View" 
$web = get-spweb http://example-site 
$list = $web.Lists["Example List"] 
$viewToHide = $list.Views | where-object { $_.Title -like $viewName } 
$folder = $list.RootFolder 
$settings = [xml]$folder.GetProperty("client_MOSS_MetadataNavigationSettings") 
$view = $settings.MetadataNavigationSettings.ViewSettings.View | where-object { $_.ViewId -like $viewToHide.Id } 
if($view -ne $null){ 
    $view.Index = "-1" 
}else{ 
    $view = $settings.CreateElement("View") 
    $settings.MetadataNavigationSettings.ViewSettings.AppendChild($view) 
    $view.setAttribute("ViewId",$viewToHide.Id) 
    $view.setAttribute("CachedName",$viewToHide.Title) 
    $view.setAttribute("Index","-1") 
    $view.setAttribute("CachedUrl",$viewToHide.Url) 
} 
$folder.SetProperty("client_MOSS_MetadataNavigationSettings",$settings.OuterXml) 
$folder.Update()