2016-03-02 208 views
1

我的SharePoint網站上有一項功能,該功能在激活功能時將視圖添加到列表中。以編程方式配置每個位置的視圖設置

在SharePoint的列表設置菜單上,我們有一個鏈接,顯示「按位置顯示設置」(或英文安裝中的「按位置查看設置」)。當我激活我的功能時,我的所有視圖都位於「在此位置可用的視圖」的右欄中。但對於一些觀點,我希望他們在左欄中,「隱藏在這個位置的觀點」。

我嘗試將參數「隱藏」設置爲對我關注的視圖爲true,但這導致我的視​​圖從每個位置視圖設置頁面中消失。

是否可以管理哪些視圖在C#或Powershell中的特定位置顯示/隱藏?

回答

0

此實例中的某個位置指的是列表中的文件夾(如果沒有其他文件夾存在,則爲根文件夾)。

要訪問在特定文件夾中顯示或隱藏哪些視圖,請訪問該文件夾的client_MOSS_MetadataNavigationSettings屬性。

該屬性將是一個XML字符串,其中包含<ViewSettings>元素,其中您將看到<View>元素的所有視圖都已配置了特殊的按位置設置。如果視圖設置爲從該位置隱藏,<View>節點的Index屬性將爲負數的字符串表示形式。

默認情況下,全新視圖將顯示在所有文件夾中,但在<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() 
相關問題