6
如何使用事件處理程序重寫組件的字段值?當我有下面的代碼片段時,保存組件時沒有錯誤。但Event hanlder完成的內容更改不會反映回Component中。我期望單值字段「size」具有「blabla ...」作爲值。使用事件處理程序重寫SDL Tridion組件的內容
// Call to Subscribe the events
EventSystem.Subscribe<Component, SaveEventArgs>(ComponentSaveInitiatedHandler,
EventPhases.Initiated);
private void ComponentSaveInitiatedHandler(Component component,
SaveEventArgs args, EventPhases phases)
{
if (component.Schema.Title == "XYZ")
{
ItemFields Fields = new ItemFields(component.Content, component.Schema);
SingleLineTextField textField = (SingleLineTextField)Fields["size"];
textField.Value = "blabla...";
}
}
這樣做的原因是因爲ItemFields集合是一個所謂的分離採集,所以使得在那裏的變化不直接更新組件。 – 2012-07-17 07:53:16
在傳統的API中,您可以使用分離的集合,然後使用它在「父」對象上再次設置相關的集合屬性。這看起來像使用核心服務的等效方法,對嗎? – 2012-07-18 12:58:26
如果你的意思是TOM,那麼我認爲字段集合是分離的。就像'Component.Fields(「heading」)。Value(1)=「Test」:Component.Save(True)'就會起作用。啊,金色的日子.. – Quirijn 2012-07-19 12:45:38