E 'possibile scorrere tutte le liste di SharePoint in ricerca di un dato campo?
-
22-10-2019 - |
Domanda
E 'possibile itterate tutte le liste di SharePoint per scoprire quali utilizzano un campo di ricerca personalizzato?
Ho una domanda che è attualmente venendo a mancare perché il campo di ricerca personalizzato stava indicando un URL ridondante che è stato rimosso.
Soluzione
Non è chiaro dalla tua domanda che tipo di soluzione che stai cercando. La mia risposta è codice basato e testato su SP 2010 piattaforma.
Quindi, ecco il codice C # ( collegamento ):
using(SPSite site = new SPSite("http://mysite"))
{
SPField fld = site.RootWeb.AvailableFields["[FIELD DISPLAY NAME]"]
ICollection<SPFieldTemplateUsage> collection = fld.ListsFieldUsedIn();
foreach (SPFieldTemplateUsage usage in collection)
{
SPWeb web = site.AllWebs[usage.WebID];
SPList list = web.Lists[usage.ListID];
// Do something here....
web.Dispose();
}
}
o si può usare qualcosa di simile utilizzando PowerShell:
$siteUrl = "http://mysite"
$fieldDisplayName = "My Field"
$site = Get-SPSite $siteUrl
$field = $site.RootWeb.AvailableFields[$fieldDisplayName]
$lists = $field.ListsFieldUsedIn()
$field.ListsFieldUsedIn() | ForEach-Object {
$w = $site.AllWebs[$_.WebID]
$l = $w.Lists[$_.ListID]
Write-Host "Web:" $w.Title "List:" $l.Title "ListUrl:" $l.RootFolder.Url
}
Quindi non sto iterazione liste ma invece sto usando il metodo SPField.ListsFieldUsedIn
per trovare tutti gli usi di campo.
Altri suggerimenti
Penso che la linea
$l = $web.Lists[$_.ListID]
dovrebbe essere
$l = $w.Lists[$_.ListID]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange