2012-07-17 21 views
6

Bir Bileşen'in alan değeri, Olay İşleyicisi kullanılarak nasıl geçersiz kılınabilir? Aşağıdaki kod parçacığına sahip olduğumda, Bileşen kaydedilirken hata olmaz. Ancak, Event hanlder tarafından yapılan içerik değişiklikleri, Bileşen'e geri yansıtılmaz. Değer olarak "blabla ..." değerine sahip tek değer alanı "büyüklüğünün" olmasını beklerim. aşağıdaki gibiOlay İşleyicileri Kullanarak SDL Tridion Bileşeninin İçeriğini Geçersiz Kılma

// 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..."; 
    } 
} 

cevap

9

Sen XML dizesiyle İçerik özelliğini güncellemeniz gerekir:

ItemFields Fields = new ItemFields(component.Content, component.Schema); 
SingleLineTextField textField = (SingleLineTextField)Fields["size"]; 
textField.Value = "blabla..."; 
component.Content = Fields.ToXml(); 
+2

ItemFields koleksiyonu yani orada bir değişiklik yaparak, bir o kadar müstakil olarak adlandırılan koleksiyon çünkü Bunun nedeni doğrudan bileşeni güncellemez. –

+0

Eski API'larda müstakil bir koleksiyonla çalışabilir ve ardından 'parent' nesnesinde ilgili koleksiyon özelliğini yeniden ayarlamak için kullanabilirsiniz. Bu temel hizmeti kullanan eşdeğer yaklaşıma benziyor, değil mi? –

+1

Eğer TOM demek istiyorsan, o zaman alan koleksiyonunun ayrıldığını düşünmüyorum. Component.Fields ("heading") gibi bir şey .. Value (1) = "Test": Component.Save (True) 'sadece çalışırdı. Ah, altın günler .. – Quirijn