0

我在共享点(列表 B)中有一个列表,其中包含一个从列表 A 中查找的列值(此站点上已有的信息)。

在尝试将列表 A 连接到数据库时,数据已从列表 A 中删除然后恢复。

话虽如此; 列表 A 已填充且正确,但现在列表 B 在该特定查找列中为空白..

有没有人对恢复该特定列值的方法有任何建议?

4

2 回答 2

1

问题在于,当尝试将列表 A 连接到数据库时,它实际上删除了所有项目,然后重新插入它们。因此,列表 B 中的查找列指向该特定列的旧元数据。

我最终删除了列表 A 中已“重新插入”的数据,然后从回收站中恢复了先前的列表 A 列值。

于 2016-01-06T19:36:16.563 回答
0

可能不是您想要的,但总比没有好。

你有任何列来匹配项目吗?类似于“如果 ListB 项在 xc 列中有 x,则相应的查找项在 yc 列中有 y”行。如果是这样,您可以使用以下 powershell 脚本重新填充列表:

asnp *share*
[System.Reflection.Assembly]::Load("Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
$ErrorActionPreference = "stop"

$webUrl = "<your Url>"
$listBTitle = "<Title of list B>"
$listATitle = "<Title of list A>"

$listBLookUpColumnName = "<lookup Column name in list b>"
$listAValueToShow = "<Column name of the value that should be displayed in the lookup field>"

$matchColumnA = "<Title of match column list A>"
$matchColumnB = "<Title of match column list B>"

$web = Get-SPWeb $webUrl
$listB = $web.Lists[$listBTitle]
$listA = $web.Lists[$listATitle]

$listB.Items | % {
$lookingItem = $_
$itemToLookIn = $listA.Items | ? { $_[$matchColumnA] -eq $lookingItem[$matchColumnB] }

$lookUpValue = New-Object Microsoft.Sharepoint.SPFieldLookupValue
$lookUpValue.LookupId = $itemToLookIn.ID
$lookUpValue.LookupValue = $itemToLookIn[$listAValueToShow]

$lookingItem[$listBLookUpColumnName] = $lookUpValue

$lookingItem.Update()
}

如果没有,是否在 ListB 中激活了版本控制?如果对这些项目进行了一些其他工作,也许可以编写一个脚本来恢复项目 1 的版本,或者从以前的版本中读取查找值。

于 2016-01-06T14:00:19.407 回答