Kentico-显示列表框或多项选择的文本值的转换

Kentico-显示列表框或多项选择的文本值的转换,kentico,Kentico,这看起来是一个简单的问题,但我试了几个小时后还是想不出来。对于我的自定义页面类型,我有一个名为“Location”的字段,它显示带有位置名称的复选框列表。我检查了多个盒子,但是使用EVE(“位置”),显示器是这样的:1×3×6,但不是旧金山,圣若泽,弗雷斯诺。谢谢你的帮助 PS:我搜索了一下,发现了。我不确定如何实现API选项,javascript选项也不好,因为我的列表是动态的,而且很长。另外,考虑到我现在使用的是Kentico 9,而不是在2016年,我也不确定是否有不同的方法来实现这一点:

这看起来是一个简单的问题,但我试了几个小时后还是想不出来。对于我的自定义页面类型,我有一个名为“Location”的字段,它显示带有位置名称的复选框列表。我检查了多个盒子,但是使用EVE(“位置”),显示器是这样的:1×3×6,但不是旧金山,圣若泽,弗雷斯诺。谢谢你的帮助

PS:我搜索了一下,发现了。我不确定如何实现API选项,javascript选项也不好,因为我的列表是动态的,而且很长。另外,考虑到我现在使用的是Kentico 9,而不是在2016年,我也不确定是否有不同的方法来实现这一点:d

您的“位置”字段似乎没有存储显示名称值,而是一些其他值,例如指向其他数据库表的ID值-这实际上是一件好事,但检索这些值确实可能有点困难

没有现成的方法可以将此ID列表(1 | 3 | 6…)“转换”为实际值

实际上,您需要创建自己的字段,该字段可以获取位置字段的值,并使用C#和适当的提供者(取决于数据存储的位置)将其转换为实际值

如果您能提供有关数据存储方式和位置的更多信息,我可能可以为您提供一些代码示例。

您的“位置”字段似乎不是存储显示名称值,而是一些其他值,例如指向其他数据库表的ID值-这实际上是一件好事,但检索这些值确实可能有点困难

没有现成的方法可以将此ID列表(1 | 3 | 6…)“转换”为实际值

实际上,您需要创建自己的字段,该字段可以获取位置字段的值,并使用C#和适当的提供者(取决于数据存储的位置)将其转换为实际值


如果您可以提供有关数据存储方式和位置的更多信息,我可能可以为您提供一些代码示例。

在这种情况下,我通常要做的是(如果是一次性设置)在转换中创建一个函数。如果您需要在其他地方使用它,请为它创建一个自定义方法,并通过宏或转换方法公开它

您可以在转换中添加如下内容(假设您的位置在自定义表中):

<script runat="server">
public string GetLocations()
{
    string returnValue = "";
    string[] locations = Eval<string>("Location").Split('|');
    foreach (string s in locations)
    {
        var item = CMS.CustomTables.CustomTableItemProvider.GetItem(ValidationHelper.GetInteger(s, -1), "your.CustomTable");
        if (item != null)
        {
            returnValue += string.Format("<p>{0}</p>", item.GetValue("LocationName"));
        }            
    }

    return returnValue;
}

公共字符串GetLocations()
{
字符串returnValue=“”;
字符串[]位置=Eval(“位置”).Split(“|”);
foreach(位置中的字符串s)
{
var item=CMS.CustomTables.CustomTableItemProvider.GetItem(ValidationHelper.GetInteger(s,-1),“your.CustomTable”);
如果(项!=null)
{
returnValue+=string.Format(“{0}

”,item.GetValue(“LocationName”); } } 返回值; }

然后像这样使用它:

<h2>Locations:</h2>
<%# GetLocations() %>
位置:

在这种情况下(如果是一次性设置),我通常会在转换中创建一个函数。如果您需要在其他地方使用它,请为它创建一个自定义方法,并通过宏或转换方法公开它

您可以在转换中添加如下内容(假设您的位置在自定义表中):

<script runat="server">
public string GetLocations()
{
    string returnValue = "";
    string[] locations = Eval<string>("Location").Split('|');
    foreach (string s in locations)
    {
        var item = CMS.CustomTables.CustomTableItemProvider.GetItem(ValidationHelper.GetInteger(s, -1), "your.CustomTable");
        if (item != null)
        {
            returnValue += string.Format("<p>{0}</p>", item.GetValue("LocationName"));
        }            
    }

    return returnValue;
}

公共字符串GetLocations()
{
字符串returnValue=“”;
字符串[]位置=Eval(“位置”).Split(“|”);
foreach(位置中的字符串s)
{
var item=CMS.CustomTables.CustomTableItemProvider.GetItem(ValidationHelper.GetInteger(s,-1),“your.CustomTable”);
如果(项!=null)
{
returnValue+=string.Format(“{0}

”,item.GetValue(“LocationName”); } } 返回值; }

然后像这样使用它:

<h2>Locations:</h2>
<%# GetLocations() %>
位置:

您是否可以更改表单中位置名称的编号?比如说

San Francisco;San Francisco
San Jose;San Jose
Fresno;Fresno
然后在你的转变中你可以做到

<% Eval("Location").ToString().Replace("|",", ") %>


如果您无法更改数字,并且您可以轻松地编写自定义内容,我将详细说明如何获取。您是否可以将数字更改为表单中的位置名称?比如说

San Francisco;San Francisco
San Jose;San Jose
Fresno;Fresno
然后在你的转变中你可以做到

<% Eval("Location").ToString().Replace("|",", ") %>


如果您无法更改数字,并且您可以轻松地编写自定义内容,我将详细介绍如何获取该数字。

谢谢!“旧金山;旧金山”对我来说很管用!非常感谢。“旧金山;旧金山”对我来说很管用!谢谢你,布伦登!这会派上用场的谢谢Brenden!这个会派上用场的。谢谢!一如既往,谢谢!一如既往。