SharePoint文档库的默认OOBX EditForm消失了

问题描述 投票:1回答:1

默认的OOBX EditForm对于SharePoint文档库消失了。我们试图在SharePoint设计器中创建一个新的编辑表单,但是出现了错误[。然后尝试另一种方法,转到“所有文件/文档库/表格”-出现列表视图阈值错误。我们的图书馆中有超过1万个项目,无法打开表格文件夹。

请提出如何找回默认编辑表单的建议。
sharepoint
1个回答
0
投票
您将需要通过PowerShell执行此操作:

$webpartTemplate = @" <WebPart xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/WebPart/v2"> <Assembly>Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly> <TypeName>Microsoft.SharePoint.WebPartPages.ListFormWebPart</TypeName> <ListName xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">{{{LIST_ID}}}</ListName> <ListId xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">{{LIST_ID}}</ListId> <PageType xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">{{PAGE_TYPE}}</PageType> <FormType xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">{{FORM_TYPE}}</FormType> <ControlMode xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">{{CONTROL_MODE}}</ControlMode> <ViewFlag xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">1048576</ViewFlag> <ViewFlags xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">Default</ViewFlags> <ListItemId xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">0</ListItemId> </WebPart> "@ Function Create-DefaultListForm { param( [parameter(Mandatory=$true)]$List, [parameter(Mandatory=$true)][string]$FormUrl, [parameter(Mandatory=$true)][ValidateSet("Display", "Edit", "New")]$FormType ) begin { } process { $webpartXml = $webpartTemplate -replace "{{LIST_ID}}", $List.Id.ToString() switch ($FormType) { "Display" { $webpartXml = $webpartXml -replace "{{PAGE_TYPE}}", "PAGE_DISPLAYFORM" $webpartXml = $webpartXml -replace "{{FORM_TYPE}}", "4" $webpartXml = $webpartXml -replace "{{CONTROL_MODE}}", "Display" break; } "Edit" { $webpartXml = $webpartXml -replace "{{PAGE_TYPE}}", "PAGE_EDITFORM" $webpartXml = $webpartXml -replace "{{FORM_TYPE}}", "6" $webpartXml = $webpartXml -replace "{{CONTROL_MODE}}", "Edit" break; } "New" { $webpartXml = $webpartXml -replace "{{PAGE_TYPE}}", "PAGE_NEWFORM" $webpartXml = $webpartXml -replace "{{FORM_TYPE}}", "8" $webpartXml = $webpartXml -replace "{{CONTROL_MODE}}", "New" break; } } try { #Check if form page already exists $listPages = Get-PnPProperty -ClientObject $List.RootFolder -Property Files $formPage = $listPages | Where-Object { $_.ServerRelativeUrl.ToLower() -eq $FormUrl.ToLower() } if ($null -eq $formPage) { Write-Output " [Creating Form Page] $FormUrl" #Create Form Remove-PnPFile -ServerRelativeUrl $FormUrl -Force $formPage = $List.RootFolder.Files.AddTemplateFile($FormUrl, [Microsoft.SharePoint.Client.TemplateFileType]::FormPage) } else { #Form page exists, check if form is recognized by list (i.e. form page has a form webpart on it) $listForms = Get-PnPProperty -ClientObject $List -Property Forms if ($null -ne $listForms -and $listForms.Count -gt 0) { $existingForm = $list.Forms | Where-Object { $_.ServerRelativeUrl.ToLower() -eq $FormUrl.ToLower() } if ($null -ne $existingForm) { Write-Warning " [Form Already Exists] $FormUrl" return; } } } Write-Output " [Adding Form Webpart] $FormUrl" #Get Webpart Manager for Form $wpm = $formPage.GetLimitedWebPartManager([Microsoft.SharePoint.Client.WebParts.PersonalizationScope]::Shared) #Import Webpart on page $wp = $wpm.ImportWebPart($webpartXml) #Add webpart to Form $wpm.AddWebPart($wp.WebPart, "Main", 1) | Out-Null #Execute changes $List.Context.ExecuteQuery() } catch { Write-Error "Error creating form $FormType at $FormUrl. Error: $($_.Exception)" } } end { } }

使用类似这样的脚本。如果只需要还原EditForm,则显然可以跳过下面的Upload,New和DispForms:

Connect-PnPOnline -Url $problemSiteUrl -UseWebLogin $list = Get-PnPList $problemlistTitle $listUrl = $list.RootFolder.ServerRelativeUrl # Handle Document Library Types if ($list.BaseType -eq [Microsoft.SharePoint.Client.BaseType]::DocumentLibrary) { Write-Host " > Processing Library: $listUrl" Create-DefaultListForm -List $list -FormUrl "$listUrl/Forms/Upload.aspx" -FormType New Create-DefaultListForm -List $list -FormUrl "$listUrl/Forms/DispForm.aspx" -FormType Display Create-DefaultListForm -List $list -FormUrl "$listUrl/Forms/EditForm.aspx" -FormType Edit } # Handle Generic List Types else { Write-Host " > Processing List: $listUrl" Create-DefaultListForm -List $list -FormUrl "$listUrl/NewForm.aspx" -FormType New Create-DefaultListForm -List $list -FormUrl "$listUrl/DispForm.aspx" -FormType Display Create-DefaultListForm -List $list -FormUrl "$listUrl/EditForm.aspx" -FormType Edit }

© www.soinside.com 2019 - 2024. All rights reserved.