[SharePoint]使用代码获取Document Set对象信息
什么是文档集
文档集是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) { }