2016-03-02 151 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() 
相关问题