2 Stimmen

Wie findet man schnell eine Sharepoint-Dokumentenbibliothek anhand der ID?

Wenn die SPList.ID und eine Websitesammlung (oder ein SPWeb mit Unterwebs) gegeben sind, wie kann ich schnell die Dokumentenbibliothek mit der angegebenen ID finden?

Ich kann alle Webs rekursiv aufzählen und eine web.Lists[guid] für jedes von ihnen durchführen, aber in meinem Fall könnte es Tausende von Subwebs geben, und ich suche nach einer Echtzeitlösung.

Wenn es keine Möglichkeit gibt, dies schnell zu tun, gibt es andere Vorschläge, wie man eine Dokumentenbibliothek eindeutig identifizieren kann? Ich könnte den vollständigen Pfad (URL) speichern, aber die Kennung wird öffentlich sichtbar sein, und ich fühle mich nicht wohl dabei, unsere genaue SharePoint-Dokumentenstruktur auf diese Weise zu verraten. Soll ich eine manuelle ID <-> Bibliothekszuordnung in einer separaten Liste pflegen?

3voto

Chris Farmer Punkte 24274

Ich stimme für den manuellen Abgleich des Paares ID -> URL in einer übergeordneten, bekannten Liste, die nur für das Konto mit erhöhten Rechten sichtbar ist.

1voto

JonH Punkte 31873

MS unterstützt dies nicht :)... Aber sehen Sie sich das mal an, um zu kichern: http://weblogs.sqlteam.com/jhermiz/archive/2007/08/15/60288.aspx

1voto

Sam Yates Punkte 718

Wenn Sie MOSS Search zur Verfügung haben, könnte das helfen, je nachdem, wie viel Zeit zwischen der Erstellung dieser Listen und der Suche nach ihnen vergeht. Sie könnten wahrscheinlich list id als verwaltete Eigenschaft zuordnen und eine schnelle Suche nach Listenobjekten mit der betreffenden id durchführen.

Für viele Problemklassen scheint die Suche der schnellste Weg zu sein, riesige Datenmengen zu durchforsten. Wenn dieser Ansatz für Sie funktionieren würde, müssten Sie nicht einmal die Websitesammlung im Voraus kennen. Ich habe im Moment keinen Zugriff auf eine meiner MOSS-Umgebungen, kann also nicht überprüfen, ob das funktioniert.

1voto

Francisco Aquino Punkte 8987

Da Sie die ListID irgendwo speichern, können Sie auch die WebId speichern. Listen werden immer über den Kontext SPWeb geöffnet, wenn Sie also zu:

http://toplevel/\_layouts/ListGeneralSettings.aspx?ID={GUID1} // OK
http://toplevel/sub1/\_layouts/ListGeneralSettings.aspx?ID={GUID1} // Wont Work (same Guid)

Mit der WebId und ListId können Sie einfach:

using(SPWeb subweb = (new SPSite("http://url")).OpenWeb(new Guid("{000...}")))
{
    SPList list = subweb.Lists.GetList(new Guid("{111...}"), true);
    // list logic
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X