我的SharePoint网站上有一项功能,可在激活该功能时将视图添加到列表中。
在SharePoint的列表设置菜单中,我们有一个链接显示"按位置显示设置" (或"按位置视图设置"在英语安装中)。当我激活我的功能时,我的所有观看次数都位于此位置的#34;视图的右侧列中。但对于某些观点,我希望它们位于左栏,"隐藏在此位置的观点"。
我尝试设置参数" Hidden"对于我关注的视图为true,但这导致我的视图完全从每个位置视图设置页面消失。
是否可以管理在C#或Powershell中的特定位置显示/隐藏哪些视图?
答案 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()