如何获取SharePoint文档库中项目的内容类型列或元数据?
此链接提供了我不需要的文件属性 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.properties.aspx
我只想获取项目的内容类型列。 我试过这个字符串strXML = oItem.Xml.ToString();但它给了我同样的垃圾。
答案 0 :(得分:2)
您可以使用SPListItem
的{{3}}属性。如果您希望列表中包含所有内容类型,则可以使用SPList
的{{3}}属性。获得内容类型引用后,可以检查其ContentType
属性以获取列。
列表项的内容类型:
SPContentType contentType = myListItem.ContentType;
foreach (SPField field in contentType)
{
// Do your stuff with this column
}
列表的内容类型:
SPContentTypeCollection contentTypes = myList.ContentTypes;
List<object> values = new List<object>();
List<SPContentTypeId> blackList = new List<SPContentTypeId>()
{
SPBuiltInContentTypeId.System,
SPBuiltInContentTypeId.Item,
};
var goodContentTypes = contentTypes.Where(c => !blackList.Contains(c.Id));
foreach (SPContentType contentType in goodContentTypes)
{
foreach (SPField field in contentType.Fields)
{
// Do your stuff with this column e.g. Get value from item
values.Add(myListItem[field.InternalName]);
}
}
答案 1 :(得分:0)
获取代表文档库的列表。完成后,您可以查看列。我通常使用这种方法:
SPWeb web = SPContext.Current.Web;
SPList list = web.Lists["Your list name"];
foreach (String field in list.DefaultView.ViewFields)
{
//whatever
}
我相信它会为您提供默认视图的所有列。您也可以使用此方法:
SPWeb web = SPContext.Current.Web;
SPList list = web.Lists["Your list name"];
foreach (SPField field in list.Fields)
{
//whatever
}
无论视图如何,都会为您提供列表(库)中所有字段的信息。