2011-04-01 74 views
0

在Dashcode中,如果我有一个数据源,例如有两个名为'FirstName'和'Last Name'的字段,我如何将两个字段连接成一个文本在列表视图中的字段?Dashcode - 如何合并来自一个数据源的两个值

我相当肯定它必须使用值转换器,所以说我将'FirstName'字段分配给文本字段,然后添加一个值转换器...然后如何添加'LastName'值到变压器中的'数值'变量。

我确定这是与dashcode.getDataSource和valueForKeyPath,我认为我接近解决方案,但它似乎有点难看,所以任何帮助将不胜感激。

回答

4

正确 - 您需要使用Value 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; 
    } 
}); 

希望这有助于 - 我与此奋战了一天!

+0

如果你想在列表中有2个字段(如Master/Detail的DashCode splitview Master侧),那么你需要使用2个独立的字段。这在这种情况下不起作用。 – ferdil 2011-05-06 19:48:55

0

对于未来的Google,因为是绝对没有文档的任何地方这一点:

当详细视图连接两个领域来自同一数据源:

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; 
    } 
}); 

为什么这不记录在任何地方?打败我 !!

相关问题