如何獲取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