Siv*_*ran 6 c# tridion tridion2009
我遇到了小问题.
我想为PublicationTarget的相同Name添加多个setConditions .这是使用interops dll.
ListRowFilter rowFilter = mTDSE.CreateListRowFilter();
rowFilter.SetCondition("StartDate", sDate);
rowFilter.SetCondition("EndDate", eDate);
rowFilter.SetCondition("PublicationTarget", pubStgTarget);
Run Code Online (Sandbox Code Playgroud)
为此PublicationTarget,我想过滤分段和实时目标,我尝试了所有方法,但没有用.
rowFilter.SetCondition("PublicationTarget", pubStgTarget);
Run Code Online (Sandbox Code Playgroud)
请建议,
1.通过x可能,最好的方法是什么?
我尝试过这种方式,但没有运气; -
rowFilter.SetCondition("PublicationTarget", "tcm:0-1-65537"); // Gives only staging
rowFilter.SetCondition("PublicationTarget", "tcm:0-2-65537"); // Gives only Live
rowFilter.SetCondition("PublicationTarget", "tcm:0-1-65537|tcm:0-1-65537"); // No result
rowFilter.SetCondition("PublicationTarget", oPubList); // No result - `oPubList` is a
Run Code Online (Sandbox Code Playgroud)
List<string>
不,不幸的是,这是不可能的.如果你想要一个条件PublicationTarget,它必须只有一个 PublicationTarget.
但是有2种解决方法:
创建两个RowFilters并PublicationTarget在每个条件中设置不同的条件.然后,您将发出两次查询(每个过滤器一次).这意味着您需要处理2个XML结果节点.
执行时不要使用PublicationTarget条件GetListPublishTransactions().然后,您将获得包含所有记录的XML元素PublicationTargets.在您的代码中,您将仅过滤您感兴趣的内容(例如,分段或直播).
我可能会使用#2(除非我知道Publish Queue可能会返回大量的记录,在这种情况下,我会使用#1).
#2的示例代码:
tdse = new TDS.TDSEClass();
tdse.Impersonate(user.Title);
tdse.Initialize();
mgtInfo = tdse.GetManagementInfo();
filter = tdse.CreateListRowFilter();
filter.SetCondition("InfoType", 2); // InProgress
filter.SetCondition("Publication", "tcm:0-23-1");
XmlDocument dom = new XmlDocument();
dom.LoadXml(mgtInfo.GetListPublishTransactions(filter));
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(new NameTable());
namespaceManager.AddNamespace("tcm", "http://www.tridion.com/ContentManager/5.0");
String xPath = String.Format(
"tcm:ListPublishTransactions/tcm:Item[@PublicationTarget='{0}'] | " +
"tcm:ListPublishTransactions/tcm:Item[@PublicationTarget='{1}']",
stagingTcmUri, liveTcmUri);
XmlNodeList nodeList = dom.SelectNodes(xPath, namespaceManager);
foreach (XmlNode node in dom.DocumentElement.ChildNodes) {
//do your thing
}
Run Code Online (Sandbox Code Playgroud)
注意:仔细检查XPath表达式,我实际上没有测试过那个位.
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |