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.

È stato utile?

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
scroll top