Dashcode - как объединить два значения из одного источника данных - PullRequest
0 голосов
/ 02 апреля 2011

В Dashcode, если у меня есть источник данных, который имеет, например, 2 поля с именами «Имя» и «Фамилия», как объединить 2 поля в одно текстовое поле в виде списка?

Я вполне уверен, что нужно использовать преобразователь значения, так что скажем, что я присваиваю поле 'FirstName' текстовому полю и добавляю преобразователь значения ... как мне затем добавить значение 'LastName' в 'переменная value 'в преобразователе.

Я уверен, что это связано с dashcode.getDataSource и valueForKeyPath, и я думаю, что я близок к решению, но все это выглядит немного неловко, поэтому любая помощь будет высоко ценится.

Ответы [ 2 ]

4 голосов
/ 06 мая 2011

Правильно - вам нужно использовать 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;
    }
});

Надеюсь, это поможет - я боролся с этим один день!!!

0 голосов
/ 11 июля 2012

Для будущих 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;
    }
});

Почему это нигде не задокументировано ??Бьет меня !!

...