我想使用GetListUsingItems方法和Tridion核心服务获取Blueprint项目的所有子项。与TOM中的旧方式相比,使用Core Service获得不同的结果(更多)。看来我也通过一个Component Link取回了引用我的源组件的其他组件。我是否缺少核心服务中的过滤器选项?使用Tridion核心服务的GetListUsingItems返回的项目多于TOM
外表套上5.3:
Function GetLocalizedItemNodes(itemUri)
Dim tridionItem : set tridionItem = tdse.GetObject(itemUri,1)
Dim rowFilter : set rowFilter = tdse.CreateListRowFilter()
call rowFilter.SetCondition("ItemType", GetItemType(itemUri))
call rowFilter.SetCondition("InclLocalCopies", true)
Dim usingItemsXml : usingItemsXml = tridionItem.Info.GetListUsingItems(1919, rowFilter)
Dim domDoc : set domDoc = GetNewDOMDocument()
domDoc.LoadXml(usingItemsXml)
Dim nodeList : set nodeList = domDoc.SelectNodes("/tcm:ListUsingItems/tcm:Item[@CommentToken='LocalCopy']")
set tridionItem = nothing
set domDoc = nothing
set GetLocalizedItemNodes = nodeList
End Function
外表套上2011 SP1核心服务:
private XElement GetLocalizedItems(string itemUri)
{
XElement usingXML = null;
try
{
CoreServiceClient client = new CoreServiceClient();
client.ClientCredentials.Windows.ClientCredential.UserName = ConfigurationManager.AppSettings["impersonationUser"].ToString(); // "administrator";
client.ClientCredentials.Windows.ClientCredential.Password = ConfigurationManager.AppSettings["impersonationPassword"].ToString();
client.ClientCredentials.Windows.ClientCredential.Domain = ConfigurationManager.AppSettings["impersonationDomain"].ToString();
// original code from http://www.tridiondeveloper.com/getting-used-items-using-the-core-service
// Create a filter
UsingItemsFilterData usingItemsFilterData = new UsingItemsFilterData
{
BaseColumns = ListBaseColumns.IdAndTitle, // to specify the detail in the XML
IncludeLocalCopies = true,
ItemTypes = new[] { ItemType.Component }
};
// Get the XML by calling .GetListXml on the client (assumes you have a 'client' object already)
usingXML = client.GetListXml(itemUri, usingItemsFilterData);
}
catch (Exception ex)
{
throw;
}
return usingXML;
}
罗伯特嗨的阵列。它不应该影响你回来的组件的数量(因为你的源项目是一个组件),但值得注意的是你的R5.3代码设置了一个'ItemType'行过滤器(这意味着你将只获得组件回来),但你的核心服务代码不。这可能会影响您的结果总数,但不会影响组件的数量(如您所描述的那样)。 – 2012-03-01 12:13:42
我添加了ItemTypes条件,但仍然得到相关的组件和子项。任何其他想法? – robrtc 2012-03-01 12:39:11