2010-01-13 63 views
1

我被要求做一些事情,我對Sharepoint開發和定製非常陌生,所以我有點不確定如何去做,或者甚至有可能。簡單的說就是創建一個Web部件,它顯示當前站點的子站點列表,我已經搞砸了,並創建了一個Web部件來完成此操作。將自定義屬性添加到可通過代碼訪問的站點

問題的第二部分是該列表需要過濾,但它的當前活動狀態以及它是什麼類型的網站,這意味着我只想顯示活動項目類型的工作項目。是否有可能創建像這樣的SharePoint站點中的屬性,我如何訪問它們來執行某種形式的過濾,也許通過使用foreach循環或使用LINQ,我只是有點困惑我怎麼可以去這和我正在努力找到真正具體的事情。

感謝,

羅布

+0

這不可能嗎? – Modika 2010-01-14 17:42:03

回答

1

這是可能的。 SPWebApplicationSPWeb對象都有一個所謂的「物業包」。該物業包可分別通過PropertiesAllProperties訪問提到的對象。 SPWebApplication是一個SPPersistedObject,它從中繼承屬性包。

您可以通過代碼(並通過SPWeb對象的SharePoint Designer)將值存儲在此屬性包中。屬性包只應被系統帳戶入店,所以訪問屬性包的任何代碼應該由SPSecurity.RunWithElevatedPrivileges塊包圍:

SPSecurity.RunWithElevatedPrivileges(delegate { 
    // value can be any object, 
    // but I recommend sticking to primitive types like string, int etc. only 
    SPContext.Current.Site.RootWeb.Properties[key] = value; 
    SPContext.Current.Site.RootWeb.AllProperties[key] = value; 
    SPContext.Current.Site.RootWeb.Update(); 
    SPContext.Current.Site.RootWeb.Properties.Update(); 
}); 

的SPWeb對象既有aProperties和AllProperties屬性。正如你所看到的,我更新了兩個物業包,你可以閱讀爲什麼在這個更深入的文章關於物業包here

P.S.

我只在這裏提到SPWebApplication爲了完整性,您應該堅持使用SPWeb。我通常將價值存儲在一個地方,這就是目前SPSite的RootWeb。

相關問題