2017-01-25 7 views
1

テキスト/ XML変換で出力する値のフィールド名の文字列配列を返すカスタムマクロメソッドがあります。この変換は、データリスト内のアイテムテンプレートとして使用されています。現在のデータ項目から値を動的に取得する方法はわかりません。 DataItemが解決しないようです - 下記のGetValueコールから何も出力されません。 CurrentDocumentを使用すると、明らかにデータ項目の代わりにページが解決されます。Kenticoテキスト/ XML変換でデータ項目値を動的に取得

<tr> 
    <td>{% SKUNumber %}</td> 
    {% foreach (spec in Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass, "RelatedModelsTable")) { %} 
    <td class="hidden-xs">{% GetValue(DataItem, spec) %} </td> 
    {% } #%} 
</tr> 

テキスト/ XML変換で現在のデータ項目にアクセスする方法はありますか?またはASCX変換に切り替える必要がありますか?

答えて

2

を使用することができますIEnumbrableを返した場合あなたは正しい答え

を取得するために私たちにシナリオを与えなければなりませんKentico v10を使用している場合は、Objectマクロを探しています。インデクサーを使用して

、あなたがからデータを取得する列を指定することができます:あなたのケースでは

{% Object[columnName] %} 

を、それは次のようになります。

<tr> 
    <td>{% SKUNumber %}</td> 
    {% foreach (spec in Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass, "RelatedModelsTable")) { %} 
    <td class="hidden-xs">{% Object[spec] %}</td> 
    {% } #%} 
</tr> 

ここで必要とする人のために、一般的な例ですカスタムマクロを使用しない例これにより、配列の列をハードコーディングするのではなく、DocumentIDDocumentName、およびNodeAliasPathが動的にレンダリングされます。

<tr> 
    {% columns = "DocumentID,DocumentName,NodeAliasPath"; foreach (column in columns.Split(",")) { %} 
    <td>{% Object[column] %} </td> 
    {% } #%} 
</tr> 


EDIT:

KenticoのV9は、変換のためObjectマクロを持たないように、動的に繰り返し項目の値を解決する一つの方法は、Util.ResolveMacroExpessionを使用することで、供給パラメータとしての列名

繰り返し項目フィールドはnamed sourcesとして登録されているため、インデクサーやマクロメソッドでアクセスする方法はありません。ここで

はKenticoのV9で動作するように変更され、質問の作者からの同じ例です:

<tr> 
    <td>{% SKUNumber %}</td> 
    {% foreach (spec in Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass, "RelatedModelsTable")) { %} 
    <td class="hidden-xs">{% Util.ResolveMacroExpression(spec) %}</td> 
    {% } #%} 
</tr> 
+0

これはKentico 9で動作しますか? – techphoria414

+1

私はKentico 9の解決策で自分の答えを更新しました –

+0

ResolveMacroExpressionでタイプミスが修正されましたが、それ以外は私が必要としていたものでした。どうもありがとう。 – techphoria414

0

あなたの{%Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass、 "RelatedModelsTable")%}はあなたと仮定するとApplyTransformation

+0

それは私がデータソース項目から書きたい列/フィールド名の配列を出力します。 – techphoria414

+0

ApplyTransfornationは私に何かが欠けていない限り、私を助けません。フィールドの値を出力したいだけです。 – techphoria414

関連する問題