2017-03-08 4 views
0

Wenn ich eine Funktion zum Ändern des Hintergrunds einer HandsOnTable-Zelle verwende, ändert sich der in der Zelle gerenderte Wert auf 1 Dezimalstelle. Ich dachte, dies liegt daran, dass ich versehentlich die Formatzeichenfolge entfernt habe, aber das scheint falsch zu sein.HandsOnTable-Zellenwert ändert sich, wenn der Renderer verwendet wird

Dies ist die Renderer, Zellfunktion und Spaltendefinition:

function negativeValueRenderer(instance, td, row, col, prop, value, cellProperties) { 
    Handsontable.renderers.TextRenderer.apply(this, arguments); 

    if (value !== instance.getData()[row][2]) 
     td.style.background = 'yellow'; 
} 
Handsontable.renderers.registerRenderer('negativeValueRenderer', negativeValueRenderer); 

function cells(row, col, prop) { 
    if (col === 1) 
     return { format: '0.00', renderer: negativeValueRenderer } 
    else 
     return { format: '0.00', } 
} 

var colDefs = [ 
    { 
     dateFormat: 'DD/MM/YYYY HH:mm', 
     correctFormat: true, 
     width: 150, 
     editor: false, 
     disableVisualSelection: true, 
     readOnly: true, 
    }, { 
     type: 'numeric', 
     format: '0.00', 
     width: 75 
    }, { 
     type: 'numeric', 
     format: '0.00', 
     width: 75, 
     editor: false, 
     readOnly: true, 
    } 
]; 

Wie kann ich sicherstellen, dass Zellen, die haben, zum Beispiel 1254,23 die zwei Dezimalstellen behalten - in meinem Tisch die dritte Spalte mit 2 wiedergegeben wird Nachkommastellen, aber die zweite ist mit nur 1 Platz.

Antwort

0

Ich hatte ein ähnliches Problem. Auf der gleichen Seite habe ich zwei Händeontables, und ich musste die aktive Zeile auf beiden Farben. So folge ich dem Beispiel von Link https://docs.handsontable.com/0.31.1/demo-conditional-formatting.html

der die Leitung hat:

Handsontable.renderers.TextRenderer.apply(this, arguments); 

Und diese Linie bringt mir eine Menge Probleme mit Zeilen, die Checkbox hat, Zahlen, Dropdown-Listen und so weiter. Ich mag mich irren, aber soweit ich das verstehen konnte, verwandeln sie alles in Text. Ich löste mein Problem durch eine Spur auf https://github.com/handsontable/handsontable/issues/732

Wie Sie sehen konnten, hat alle Zellen Ihren eigenen Typ, und durch den Typ muss eine andere Art von Renderer angewendet werden.

Von Ihrem colDefs erhalten Sie den Typ der Spalte-Zelle. Hoffe, dass es dir hilft.

Guten Glück

Verwandte Themen