在Kentico文本/XML转换中动态获取数据项值
我有一个自定义宏方法,它返回字段名的字符串数组,我希望在文本/XML转换中输出这些字段名的值。转换正在用作数据列表中的项模板。我不知道如何从当前数据项动态获取值。似乎在Kentico文本/XML转换中动态获取数据项值,kentico,Kentico,我有一个自定义宏方法,它返回字段名的字符串数组,我希望在文本/XML转换中输出这些字段名的值。转换正在用作数据列表中的项模板。我不知道如何从当前数据项动态获取值。似乎DataItem没有解析——下面的GetValue调用没有输出任何内容。使用CurrentDocument显然会解析页面而不是数据项 <tr> <td>{% SKUNumber %}</td> {% foreach (spec in Util.GetSpecFieldsForPageTyp
DataItem
没有解析——下面的GetValue
调用没有输出任何内容。使用CurrentDocument
显然会解析页面而不是数据项
<tr>
<td>{% SKUNumber %}</td>
{% foreach (spec in Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass, "RelatedModelsTable")) { %}
<td class="hidden-xs">{% GetValue(DataItem, spec) %} </td>
{% } #%}
</tr>
{%SKUNumber%}
{%foreach(Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass,“RelatedModelsTable”)中的规范){%}
{%GetValue(数据项,规范)%}
{% } #%}
是否有任何方法可以访问文本/XML转换中的当前数据项?或者我需要切换到ASCX转换吗?您必须为我们提供场景才能获得正确答案
如果{%Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass,“RelatedModelsTable”)%%}返回IEnumbrable,则可以使用假设您使用的是Kentico v10,那么您正在查找
对象
宏
使用索引器,可以指定要从中检索数据的列:
{% Object[columnName] %}
在您的情况下,它将是:
{%SKUNumber%}
{%foreach(Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass,“RelatedModelsTable”)中的规范){%}
{%Object[spec]}
{% } #%}
这里有一个通用示例,适用于那些需要一个没有任何自定义宏的示例的人。这将动态呈现DocumentID
、DocumentName
和NodeAliasPath
,指定数组中的列,而不是对它们进行硬编码
{%columns=“DocumentID,DocumentName,NodeAliasPath”foreach(columns.Split(“,”)中的列){%}
{%Object[列]]}
{% } #%}
编辑: 由于Kentico v9没有用于转换的
对象
宏,动态解析重复项的值的一种方法是使用Util.ResolveMacroExpression
,并提供列名作为参数
重复项字段注册为,因此无法使用索引器或宏方法访问它们
下面是来自问题作者的相同示例,已修改为适用于Kentico v9:
{%SKUNumber%}
{%foreach(Util.GetSpecFieldsForPageType(CurrentDocument.NodeClass,“RelatedModelsTable”)中的规范){%}
{%Util.ResolveMacroExpression(spec)%}
{% } #%}
它输出一个列/字段名称数组,我想从数据源项中写出这些名称。ApplyTransformation对我没有帮助,除非我遗漏了什么。我只想输出字段的值。我已经用ResolveMacroExpression中Kentico 9Fixed打字错误的解决方案更新了我的答案,但除此之外,这正是我所需要的。非常感谢。