以编程方式配置每个位置视图设置

时间:2016-03-02 15:53:04

标签: c# powershell sharepoint sharepoint-2010 sharepoint-list

我的SharePoint网站上有一项功能,可在激活该功能时将视图添加到列表中。

在SharePoint的列表设置菜单中,我们有一个链接显示"按位置显示设置" (或"按位置视图设置"在英语安装中)。当我激活我的功能时,我的所有观看次数都位于此位置的#34;视图的右侧列中。但对于某些观点,我希望它们位于左栏,"隐藏在此位置的观点"。

我尝试设置参数" Hidden"对于我关注的视图为true,但这导致我的视​​图完全从每个位置视图设置页面消失。

是否可以管理在C#或Powershell中的特定位置显示/隐藏哪些视图?

1 个答案:

答案 0 :(得分:0)

此实例中的位置是指列表中的文件夹(如果不存在其他文件夹,则指根文件夹)。

要访问在特定文件夹中显示或隐藏的视图,请访问该文件夹的client_MOSS_MetadataNavigationSettings属性。

该属性将是一个包含<ViewSettings>元素的XML字符串,您可以在其中看到已使用特殊的每个位置设置配置的任何视图的<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()
相关问题