2012-08-23 43 views
3

我正在尋找一種方法,我如何使用Categoriesdata從Tridion獲取所有類別。我在下面嘗試,但它顯示錯誤。如何使用類別數據從Tridion獲取類別

CoreServiceSession client = new CoreServiceSession(); 
SessionAwareCoreServiceClient csClient = client.GetClient(); 
ReadOptions readoption = new ReadOptions(); 

CategoriesFilterData filter = new CategoriesFilterData(); 
XElement xml = csClient.GetSystemWideList(filter); 
+0

我注意到在這個和以前的代碼示例中,您創建了一個'CoreServiceSession'對象。出於好奇:這是什麼課,它來自哪裏?你似乎沒有使用它。 –

回答

9

您需要使用GetListXml代替GetSystemWideList並指定要從其檢索的類別的發佈ID:

CategoriesFilterData filterData = new CategoriesFilterData(); 
XElement resultXml = client.GetListXml(publicationId, filterData); 

GetSystemWideList通常是用於檢索的東西,是全系統,而不是必然僅有1出版物,如PublicationTargets和MultimediaTypes

您可以但是也可以嘗試搜索查詢,像這樣:

SearchQueryData filter = new SearchQueryData(); 
filter.ItemTypes = new ItemType[] { ItemType.Category }; 

IdentifiableObjectData[] results = client.GetSearchResults(filter); 
foreach (IdentifiableObjectData obj in results) 
{ 
    Console.WriteLine(String.Format("{0} - {1}", obj.Title, obj.Id)); 
} 
+0

感謝Reinder,但是如果我需要從tridion獲取所有類別,而不是從特定的出版物。 – SDLBeginner

+0

啊,好的。 你可以嘗試在tridion中使用SearchQueryData和搜索。 –

+1

像這樣: SearchQueryData filter = new SearchQueryData(); filter.ItemTypes = new ItemType [] {ItemType.Category}; filter.BaseColumns = ListBaseColumns.Extended; IdentifiableObjectData [] results = client.GetSearchResults(filter); –