2

我想将一个组件从一个文件夹移动到另一个已经创建的文件夹。

while (textReader.Read())
{
    textReader.MoveToElement();
    Component comp = tdse.GetComponent(textReader.GetAttribute("ID"), constant_Publication, true, -1);
}

我尝试寻找,comp.Move但它没有退出。另外,我看到comp.Info.Path那里有路径,但是如果我尝试修改它,我会遇到以下错误:

错误 7 无法将属性或索引器“Tridion.ContentManager.Interop.TDS._Info.Path”分配给 - 它是只读的。

我可以做些什么来移动组件?

4

2 回答 2

4

看起来您使用的是 TOM 而不是 TOM.NET

您需要对要将新项目放入的文件夹执行粘贴操作

就像是

objFolder.PasteItem(comp, 1, false)

第一个参数是你要粘贴的项目,第二个是一个枚举器(EnumTDSCutCopyAction - 1 是剪切(移动),0 是复制)来表示是要复制粘贴还是剪切粘贴,最后一个是是否您想声明一个唯一的名称。

在 TOM.NET 中有一个RepositoryLocalObject.Move()方法。

于 2013-03-14T13:56:44.257 回答
1

您的 GetObject() 方法调用似乎缺少一些参数。模板手册指出以下内容:

Public Function GetObject( ByVal URI As String, ByVal mode As TDSDefines.EnumOpenMode, Optional ByVal contextPublication As Variant = TDSDefines.URINULL, Optional ByVal filter As TDSDefines.XMLReadFilter = XMLReadNull ) As Object

但是,您传入的第二个参数似乎是发布 ID,而不是 EnumOpenMode。将“OpenModeEditWithFallback”作为函数的第二个参数传递给函数以使组件处于写入模式,之后您应该能够在其上使用 Move 函数。

此外,请考虑在我们的新 Tridion 端http://tridion.stackexchange.com上发布更多 Tridion 问题

于 2013-03-14T12:28:36.667 回答