2009-11-18 67 views
2

鑑於SPList.ID和網站集(或子站點有一個的SPWeb),我怎麼迅速找到給定ID的文檔庫?如何通過ID快速查找共享點文檔庫?

我可以通過所有網絡遞歸枚舉並對它們中的每一個執行web.Lists [guid],但在我的情況下可能會有數以千計的子網站,我正在尋找一個實時解決方案。

如果沒有辦法做到這一點很快,關於如何唯一標識文檔庫的任何其他建議?我可以存儲完整路徑(url),但標識將公開顯示,我不覺得放棄我們完全相同的SharePoint文檔結構非常舒服。我應該採用手動ID < - >庫映射到單獨的列表中嗎?

回答

1

由於您在某處存儲了ListID,因此您還可以存儲WebId。列表是通過上下文的SPWeb打開始終,因此,如果你去:

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

具有WebId和ListId您可以簡單:

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

好的建議!我有一個實際的問題,因爲單個GUID所需的存儲已經在爲這個特定的應用程序推送它(使得自定義的id - > url列表更具吸引力,因爲我可以在那裏生成我自己的簡單ID),但是你的做一個好點。 – 2009-11-20 06:46:52

+0

哦,在你的例子中,不會使用語句只處理web(離開SPSite懸掛)? – 2009-11-20 06:49:07

+0

是的保羅!感謝poiting它,我的本地測試使用上下文,我只是用'url版本'替換它。 – 2009-11-20 19:54:31

1

MS不支持這一點:)... 但是看看這個爲笑聲:http://weblogs.sqlteam.com/jhermiz/archive/2007/08/15/60288.aspx

+0

謝謝,但我們正在努力保持認證的金牌合作伙伴,所以這不是一個真正的選擇......我們當然不會自己窺探數據庫,看看這樣的回調是否可行*輕輕推動,眨眼眨眼*。 :-) – 2009-11-18 19:53:58

+0

沒問題,以爲我會嘗試:)。 – JonH 2009-11-18 20:01:15

3

我投手冊ID - >在一個頂級的URL對匹配,知名名單這僅對提升的特權帳戶纔可見。

1

如果您有可用MOSS搜索,那麼它可能會幫助,這取決於你獲得創建這些列表和需要尋找它們之間的時間差。您可能可以將列表ID作爲託管屬性進行映射,並快速搜索帶有問題標識的列表對象。

對於很多問題類,好像搜索是通過龐大的數據集翻錄最快的方式。事實上,如果這種方法適用於您,您甚至不需要預先知道網站集。目前無法訪問我的任何MOSS環境,因此無法驗證此操作是否可行。