获取项目的内容类型列/元数据

时间:2011-03-04 17:57:15

标签: c# sharepoint-2007

如何获取SharePoint文档库中项目的内容类型列或元数据?

此链接提供了我不需要的文件属性 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.properties.aspx

我只想获取项目的内容类型列。 我试过这个字符串strXML = oItem.Xml.ToString();但它给了我同样的垃圾。

2 个答案:

答案 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
}

无论视图如何,都会为您提供列表(库)中所有字段的信息。