加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Tridion 2009 – 使用Interops – 是否有可能为同一个Name

发布时间:2020-12-15 08:22:40 所属栏目:百科 来源:网络整理
导读:我遇到了小问题. 我想为PublicationTarget的相同Name添加多个setConditions.这是使用interops dll. ListRowFilter rowFilter = mTDSE.CreateListRowFilter();rowFilter.SetCondition("StartDate",sDate);rowFilter.SetCondition("EndDate",eDate);rowFilter.
我遇到了小问题.

我想为PublicationTarget的相同Name添加多个setConditions.这是使用interops dll.

ListRowFilter rowFilter = mTDSE.CreateListRowFilter();
rowFilter.SetCondition("StartDate",sDate);
rowFilter.SetCondition("EndDate",eDate);
rowFilter.SetCondition("PublicationTarget",pubStgTarget);

对于这个PublicationTarget,我想要使用staging&活的目标,我尝试了所有的方式,但没有用.

rowFilter.SetCondition("PublicationTarget",pubStgTarget);

请建议,
1.通过xis可能,最好的方法是什么?

我尝试过这种方式,但没有运气; –

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

列表与LT;串GT;

解决方法

不,不幸的是,这是不可能的.如果要在PublicationTarget上添加条件,则必须只有一个PublicationTarget.

但是有2种解决方法:

>创建两个RowFilter并在每个RowFilters中设置不同的PublicationTarget条件.然后,您将发出两次查询(每个过滤器一次).这意味着您需要处理2个XML结果节点.
>执行GetListPublishTransactions()时不要使用PublicationTarget条件.然后,您将获得一个包含所有PublicationTargets记录的XML元素.在您的代码中,您只会过滤您感兴趣的内容(例如,分段或直播).

我可能会使用#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
}

注意:仔细检查XPath表达式,我实际上没有测试过那个位.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读