2016-04-25 3 views
1

ich derzeit Datenbindung zu einem Tableview ein und unten ist der Code:Daten Stil des Labels in einer TableRow Umwandlung

<Alloy> 
    <TableViewRow backgroundColor="{background}" id="businessRow"> 
     <Label id="st1" class="ribbonIcon1" color="{highlight1}" text="{st1}"/> 
     <Label id="st2" class="ribbonIcon2" color="{highlight2}" text="{st2}"/> 
     <Label id="st3" class="ribbonIcon3" color="{highlight3}" text="{st3}"/> 
     <Label id="st4" class="ribbonIcon4" color="{highlight4}" text="{st4}"/> 
     <Label id="st5" class="ribbonIcon5" color="{highlight5}" text="{st5}"/> 
    </TableViewRow> 
</Alloy> 

Jedes Etikett ist ein Symbol Schriftart, die von {st1} definiert wird. Ich verwende icomoon Schriftarten, die auf die Ligaturen verweisen, damit ich die Icons entsprechend ändern kann. Ich verwende das Checkbox-Symbol für diesen Test.

Ich mache dann eine Datentransformierung, um die Symbole mit einer blauen Farbe zu markieren, denen Unternehmen zugeordnet sind, und Grau, wenn nicht, das aus einer SQLite-Datenbank (DesQuery) gezogen wird.

SQL-Schnipsel und Funktionen

...COUNT(BusinessSites.BusinessID) AS Bqty, sum(case when  Services.ServiceID = "1" then 1 else 0 end) ST1, sum(case when Services.ServiceID = "2" then 1 else 0 end) ST2, sum(case when Services.ServiceID = "3" then 1 else 0 end) ST3, sum(case when Services.ServiceID = "4" then 1 else 0 end) ST4, sum(case when Services.ServiceID = "5" then 1 else 0 end) ST5 FROM... 



    function DescOrder(){ 
     Junctions.fetch({query:DesQuery}); 
     Junctions.setSortField("display_order", "DESC"); 
     Junctions.sort(); 
     transformJunctionList(Junctions); 
     toggleOrder = "DESC"; 
    } 

function AscOrder(){ 
    Junctions.fetch({query:DesQuery}); 
    Junctions.setSortField("display_order", "ASC"); 
    Junctions.sort(); 
    transformJunctionList(Junctions); 
    toggleOrder = "ASC"; 
} 

function transformJunctionList(model) { 
    var transform = model.toJSON(); 
       transform.st1 = "checkbox"; 
       transform.ST1 > "0" ? transform.highlight1 = "#4993cc" : transform.highlight1 = "#ebe9e9"; 
       transform.st2 = "checkbox"; 
       transform.ST2 > "0" ? transform.highlight2 = "#4993cc" : transform.highlight2 = "#ebe9e9"; 
       transform.st3 = "checkbox"; 
       transform.ST3 > "0" ? transform.highlight3 = "#4993cc" : transform.highlight3 = "#ebe9e9"; 
       transform.st4 = "checkbox"; 
       transform.ST4 > "0" ? transform.highlight4 = "#4993cc" : transform.highlight4 = "#ebe9e9"; 
       transform.st5 = "checkbox"; 
       transform.ST5 > "0" ? transform.highlight5 = "#4993cc" : transform.highlight5 = "#ebe9e9";` 

Die Ausgabe auf iOS funktioniert, aber mir diese Warnung zu geben:

` 

[Warnen]: Hex Farbe bestanden sieht ungültig:

Allerdings stürzt Android an dem Punkt ab, an dem das TableView geladen wird. Dies funktionierte mit früheren Versionen ohne Fehler. Wenn ich die {highlight1} usw. entferne und durch ein gültiges Hexadezimal ersetze, läuft es gut.

Dies ist ein aktueller Bildschirmausschnitt der Ausgabe auf dem iPhone.

Screen shot of the icons in the tablerow

Alle Ratschläge, wie man das gleiche Ergebnis zu erzielen fantastisch wäre.

+0

Welche Legierung Version verwenden Sie? Wenn Sie das transformierte Objekt protokollieren, sind die Hex-Codes gültig? –

Antwort

0

Wir sind mit der neuen Version auch auf dieses Problem gestoßen. Für uns war es eine Farbe, die wir manchmal festgelegt haben. In den vorherigen Versionen würde es nur die ohne eine Farbe ignorieren, aber in dieser Version versucht es null zu parsen. Wir haben es behoben, indem wir eine Standardfarbe für Weiß für alle Modelle in der Transformationsfunktion festgelegt haben und sie dann bei Bedarf ändern.

+0

Danke Mike. Werde es versuchen. –