【问题标题】:Configure per-location view settings programmatically以编程方式配置每个位置的视图设置
【发布时间】:2016-06-15 14:09:11
【问题描述】:

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

在 SharePoint 的列表设置菜单上,我们有一个链接显示“按位置显示设置”(或英文安装中的“按位置查看设置”)。当我激活我的功能时,我的所有视图都在“此位置可用视图”的右栏中。但是对于某些视图,我希望它们位于左栏中,“视图隐藏在此位置”。

我尝试将我关注的视图的参数“隐藏”设置为 true,但这导致我的视​​图完全从每个位置视图设置页面中消失。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    该属性将是一个包含 <ViewSettings> 元素的 XML 字符串,您将在其中看到 <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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      相关资源
      最近更新 更多