如何获取SharePoint文档库中项目的内容类型列或元数据?获取项目的内容类型列/元数据
此链接给我不需要 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.properties.aspx
我只想要得到的内容类型列项的文件属性。 我试过这个字符串strXML = oItem.Xml.ToString();但它给了我相同的垃圾。
如何获取SharePoint文档库中项目的内容类型列或元数据?获取项目的内容类型列/元数据
此链接给我不需要 http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfile.properties.aspx
我只想要得到的内容类型列项的文件属性。 我试过这个字符串strXML = oItem.Xml.ToString();但它给了我相同的垃圾。
您可以使用SPListItem
的ContentType
属性。如果您想要列表中的所有内容类型,则可以使用SPList
的ContentTypes
属性。获得内容类型参考后,您可以检查其Fields
属性以获取列。
的列表项内容类型:
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]);
}
}
获取表示您的文档库的列表。一旦你有了这个,你可以看看列。我通常使用这种方法:
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
}
这将给你列表(库)中的所有领域的信息,无论视图。
我的列表默认视图只包含6个领域。内容类型有大约15个字段。 – 2011-03-04 19:18:14
Abe,你的方法给了我内容类型的列。到现在为止还挺好。但它只给我列名,我也需要这个值。 – 2011-03-04 19:23:11
这个方法还带来了我不想要的sharepoint的系统列(创建,选择,修改等),这就是为什么我只想提取列名和它的内容类型值。 – 2011-03-04 19:20:06
您可以根据内容类型的名称或ID过滤出您不想要的任何内容类型。请参阅[系统内容类型ID的部分列表](http://msdn.microsoft.com/zh-cn/library/ms452896.aspx)。要获取这些值,可以将您从内容类型获得的'SPField'与您的实际列表项匹配。 – Chris 2011-03-04 20:27:19
请参阅编辑以查看我最近的评论。 – Chris 2011-03-04 20:35:02