2011-04-01 79 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; 
    } 
}); 

爲什麼這不記錄在任何地方?打敗我 !!

相關問題