什麼是文檔集
文檔集是SharePoint 2010中一個新加入的功能,它可以協助我們更好的對SharePoint中的文檔進行管理。文檔集為其內儲存的所有文檔提供了統一的使用者介面 (UI)、中繼資料、行為,它使文檔與SharePoint網站之間聯絡的更加緊密了。其實可以將文檔集看成是一個功能更加強大的檔案夾,因為文檔集內容類型就是派生自檔案夾內容類型的。
如何擷取文檔集資訊
在建立文檔集內容類型時我們是可以將該內容類型中的欄位設定為共用列,共用列的值可以自動的被同步到文檔集中的所有文檔。
在開發過程中,如果要通過文檔集中的文檔對象擷取這些共用列的內容時,完全可以像擷取普通的列表欄位那樣來擷取共用列的值。
SPListItem m_item=file.Item; String m_year=m_item["年度"].ToString(); String m_term=m_item["學期"] .ToString(); String m_examDate=m_item["考試時間"] .ToString();
如果要獲得文檔集內的非共用列的內容呢?這時應該怎麼辦呢?例如文檔集的名稱欄位或者一些隱藏欄位,這些欄位是無法設定為共用列的。
此時就要想辦法獲得該文檔集的DocumentSet對象了,為了獲得DocumentSet對象需要使用DocumentSet.GetDocumentSet(SPFolder folder)方法,該方法需要一個SPFolder對象作為參數,前面已經說過了可以將文檔集看成一個檔案夾,那麼我們可以使用下面的代碼來獲得這個SPFolder對象。
SPFolder folder= item.Web.GetFolder(item.Url.Substring(0, item.Url.LastIndexOf('/')));
有了Folder對象就可以很容易的獲得這個文檔集的DocumentSet對象了。
DocumentSet docSet = DocumentSet.GetDocumentSet(folder);
接著再使用DocumentSet對象的Item屬性就可以獲得與這個文檔集對象關聯的SPListItem對象,這時就可以很容易的獲得該文檔集的各個欄位的內容了。
try { SPListItem item = SPContext.Current.ListItem; SPFolder folder= item.Web.GetFolder(item.Url.Substring(0, item.Url.LastIndexOf('/'))); DocumentSet set = DocumentSet.GetDocumentSet(folder); writer.WriteLine("ContentType: {0}<br/>", item.ContentType.Name); writer.WriteLine("Title: {0}<br/>", item.Title); writer.WriteLine("WelcomePageUrl: {0}<br/>", set.WelcomePageUrl); writer.WriteLine("ItemCount: {0}<br/>", set.Folder.ItemCount); writer.WriteLine("Welcomepage Fields:<br/>"); DocumentSetTemplate template = set.ContentTypeTemplate; WelcomePageFieldCollection fields = template.WelcomePageFields; foreach (SPField field in fields) { writer.WriteLine("{0}<br/>", field.Title); } } catch (Exception) { }