Kentico 使用自定义表提供下拉列表数据源

Kentico 使用自定义表提供下拉列表数据源,kentico,Kentico,假设我有一个名为可能的URL目标参数的自定义表,该表的代码名为xyz.PossibleTargets,共有两列: 说明和值。 如何在页面类型的下拉字段中输入数据,使值(从表中)作为值,而说明作为名称? 我已经尝试过但不起作用的: 创造价值;命名按换行符划分的对,并将其作为选项列表放置: z=“”;foreach(CMSContext.Current.GlobalObjects.CustomTables[“xyz.PossibleTargets”].Items中的x){z+=x.GetValue(

假设我有一个名为
可能的URL目标参数的自定义表,该表的代码名为
xyz.PossibleTargets
,共有两列:
说明
。 如何在页面类型的下拉字段中输入数据,使
值(从表中)作为
,而
说明作为
名称
?
我已经尝试过但不起作用的:

  • 创造价值;命名按换行符划分的对,并将其作为选项列表放置:

    z=“”;foreach(CMSContext.Current.GlobalObjects.CustomTables[“xyz.PossibleTargets”].Items中的x){z+=x.GetValue(“值”);z+=x.GetValue(“解释”);z+=x.GetValue(“解释”);z+=“\n”};返回z

    验证器不允许我做这样的把戏

  • 设置选项
    宏表达式
    并提供可枚举对象:

    CMSContext.Current.GlobalObjects.CustomTables[“xyz.PossibleTargets”].Items

    在项转换中:
    {%explainion%}
    和在值列中
    {%TargetValue%}

    这也不起作用

  • 如何正确地做到这一点?有关字段的文档和提示没有帮助


    Kentico v11.0.26

    无需使用宏,使用直接SQL,使用宏只会使看似简单的下拉列表复杂化

    SELECT '', '-- select one --' AS Explanation
    UNION
    SELECT TargetValue, Explanation
    FROM xyz_PossibleTargets -- make sure to use the correct table name
    ORDER BY ExplanationText
    

    这应该准确地填充您要查找的内容,而不需要复杂的宏。

    我认为您应该这样做,而不需要将字段标记为宏。只需在那里输入宏。在屏幕上看一看

    谢谢,这也起作用了,但我很好奇如何才能释放K#的真正力量,以及简单易用的宏语法;)。它功能强大,但也不需要,在这种情况下可能会限制性能。作为@DawidJachnik答案的旁注,下拉配置中的宏可以如下所示:
    GlobalObjects.CustomTables[“xyz.PossibleTargets”].Items.Columns(“值,解释”).OrderBy(“解释”)
    。您不需要自己循环遍历这些值,Kentico将应用提供的转换为您迭代结果。