2012-03-15 9 views
2

Je travaille sur la création de .NET TBB pour Tridion 2011 SP1. J'ai deux champs dans le composant où l'un est évalué seul et l'autre est le champ de schéma incorporé.Mise en boucle d'un champ multivalué et d'un schéma incorporé dans .NET Assembly TBB

Pour récupérer le champ d'une valeur unique, je l'ai utilisé

string singlefield= package.GetValue("Component.Fields.singlefield"); 

mais de se référer domaine j'ai utilisé plusieurs valeurs.

string multi= package.GetValue("Component.Fields.multi.values"); 

Mais il ne récupère pas les valeurs.

S'il vous plaît aider une façon de le faire.

+0

Votre champ à valeurs multiples est-il incorporé? –

Répondre

7

Je n'utiliserais pas package.GetValue pour toute valeur dans un composant. Au lieu de cela, utilisez quelque chose comme ceci:

// Get the component 
Component c = (Component)engine.GetObject(package.GetByName(Package.ComponentName)); 
// Get the fields 
ItemFields fields = new ItemFields(c.Content, c.Schema); 
// get our Embedded schema field 
EmbeddedSchemaField emb = (EmbeddedSchemaField)fields["emb"]; 
// Loop 
foreach (ItemFields embeddedfields in emb.Values) 
{ 
    foreach (ItemField field in embeddedfields) 
    { 
     var tField = field as TextField; 
     if (tField != null) 
     { 
      string something = tField.Value; 
     } 
    } 
} 
+0

Merci beaucoup .. – Patan

0

Vous devriez faire quelque chose comme ceci:

package.GetValue("Component.Fields.emb.multi[0]"); 

emb est le nom du champ dans le schéma des composants et multi est le champ de valeur multiple de votre schéma intégrable. [0] est l'index de champ, mais il est facultatif

+0

comment ajouter pour la boucle pour cela .. – Patan

+0

@muzimil Si vous êtes sûr qu'il n'y aura pas de virgules dans le champ, vous pouvez obtenir la valeur du champ 'Component.Fields.emb.multi', puis le diviser par une virgule, mais je ' J'ai peur que le seul autre moyen sera de lire le contenu d'un composant, puis analyser XML –

Questions connexes