1

シナリオ:共有ドキュメントライブラリのデフォルトビュー「すべてのドキュメント」に追加された2つのフィールドがあります。home.aspxページの共有ドキュメントXsltListViewWebPartビューは、これがOOTBに存在していたため、変更を反映していません。XsltListViewWebPartビューに2つのフィールドを追加する必要があります。これは、いくつかのサイトがすでに存在し、手動で変更することは問題外だからです。

XsltListViewWebPartのすべてのViewFieldを削除してから、ライブラリのビューからフィールドを追加するリソースを見つけました。 http://spblog.net/post/2011/04/26/Changing-default-view-for-ListViewWebPart-programmatically.aspx

私の環境で動作するように少し変更する必要がありましたが、ここにソースがあります

# Add SharePoint cmdlets reference
Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue

$web = Get-SPWeb -Identity "http://myServer/sites/Test_Site04_18_03-03-49"
$file = $web.GetFile("SitePages/Home.aspx");
$wpMngr = $file.GetLimitedWebPartManager([System.Web.UI.WebControls.Webparts.PersonalizationScope]::Shared);
$sharedDocList = $web.Lists["Shared Documents"]
$sharedDocViewFields = $list.Views["All Documents"].ViewFields
$foundWebPart = $false

:webPartLoop foreach($webPart in $wpMngr.WebParts)
{
    :viewLoop foreach($view in $sharedDocList.Views)
    {
        if($webPart.ViewGuid -eq $view.ID.ToString("B"))
        {
            $foundWebPart = $true

            $view.ViewFields.DeleteAll()

            #loop through all the fields in the shared doc view and add them
            foreach($field in $sharedDocViewFields)
            {
                write-host "field: " $field
                $view.ViewFields.Add($field)
            }

            $view.Update();
            break viewLoop
        }
    }

    #break out of the loop because we already found the webpart and modified the view
    if ($foundWebPart)
    {
        break webPartLoop
    }
}

私はそれを実行し、エラーが表示されます:

Exception calling "Add" with "1" argument(s): "Column 'ColumnName' does not exist. It may have been deleted by another user."
+ $view.ViewFields.Add <<<< ($field)
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

私は何が間違っているのですか?DocLibの元のフィールドの方法に問題があるのではないかと思います。画面に書き出すことができるのは非常に奇妙ですが、新しいビューに追加しようとすると、存在しないと表示されます。ビューをライブラリで使用されているのと同じビューに変更するという観点からもこれにアプローチしようとしましたが、成功しませんでした。私が読んでいた記事は、隠されたビューについて何か言及していました.....

4

0 に答える 0