Dashcode - 如何组合来自一个数据源的两个值

时间:2011-04-01 20:20:29

标签: datasource concatenation dashcode

在Dashcode中,如果我有一个dataSource,例如,有2个名为'FirstName'和'Last Name'的字段,我如何将2个字段连接到列表视图中的一个文本字段?

我很确定必须使用值变换器,所以说我将'FirstName'字段分配给文本字段,然后添加值变换器...我如何将'LastName'值添加到变压器中的'value'变量。

我确信这与dashcode.getDataSource和valueForKeyPath有关,我认为我接近解决方案,但这一切似乎有点笨拙,所以任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:4)

正确 - 您需要使用Value Transformer。

在Transformer中,您将编码如下:

itemDescription = Class.create(DC.ValueTransformer,{
    transformedValue: function(value){

    var itemDataSource = dashcode.getDataSource('itemsList'); // The Data Source Name here
    var lastName = itemDataSource.selection().valueForKey('lastName'); // Presumes you have a field called lastName
    return value + " " + lastName;
    }
});

希望这会有所帮助 - 我和它争斗了一天!!!

答案 1 :(得分:0)

对于未来的googlers,因为在任何地方都没有关于此的文档:

在详细视图中连接两个字段来自同一个数据源时:

<强> XML

<?xml version="1.0" encoding="utf-8"?>
<immobilier>    
  <bien>
    <ID>1453</ID> 
    <Titre>Maison / Villa F4</Titre>
    <Ville>Sainte Clotilde</Ville>
    <Quartier>BRETAGNE</Quartier>
  </bien>
</immobilier>

要合并字段Ville和Quartier,请创建一个如下所示的值转换器:

mapAdresse = Class.create(DC.ValueTransformer,{
    transformedValue: function(value){

        if (value.trim() != "") {
            //Replace immoListe with your source name
            var itemDataSource = dashcode.getDataSource('immoListe');

            //THIS IS THE MOST IMPORTANT : HOW TO FIND THE CURRENTLY SELECTED ITEM INDEX 
            var selectedIndex = document.getElementById('list').selectedIndex; 

            //Use the selectedIndex to find the record in the datasource
            var quartier = itemDataSource.selection().valueForKey("bien")[selectedIndex].valueForKey("Quartier");

            //Concatenate to your liking
            if (quartier.trim() != "") value = value + ", "+ quartier;
        }

        return value;
    }
});

为什么没有在任何地方记录?打败我!!