2016-07-29 26 views
0

Ich versuche, den Renderer und das numerische Format für die gleiche handsontable Zelle ohne Glück anzupassen. Die Angabe des benutzerdefinierten Renderers oder des numerischen Formats funktioniert problemlos, aber wenn beide auf dieselbe Zelle angewendet werden, wird das numerische Format ignoriert.handsontable anpassen Renderer und numerisches Format funktioniert nicht

Hier ist ein einfacher Beispielcode, der das Problem veranschaulicht. Ohne cellProperties.renderer = firstRowRenderer; 1,5 wird korrekt als 1,50 € angezeigt, mit dieser Zeile wird 1,5 angezeigt (fett in grün).

JSP

<div id="exampleGrid"></div> 

Javascript

function firstRowRenderer(instance, td, row, col, prop, value, cellProperties) { 
     Handsontable.renderers.TextRenderer.apply(this, arguments); 
     td.style.fontWeight = 'bold'; 
     td.style.color = '#177B57'; 
     td.style.background = '#CEC'; 
    } 
var contExample = document.getElementById("exampleGrid"); 
var ExampleHOT; 
var language = { 
      delimiters: { 
       thousands: '.', 
       decimal: ',' 
      }, 
      abbreviations: { 
       thousand: 'k', 
       million: 'm', 
       billion: 'b', 
       trillion: 't' 
      }, 
      ordinal: function (number) { 
       return '.'; 
      }, 
      currency: { 
       symbol: '€' 
      } 
     }; 
    if (typeof window !== 'undefined' && this.numeral && this.numeral.language) { 
     this.numeral.language('de', language); 
    } 
    function ExampleTable(){ 
     ExampleHOT = new Handsontable(contExample,{ 
     data: [ [1.5], [] ], 
     rowHeaders: true, 
     colHeaders: true, 
     cells: function (row, col, prop) { 
      var cellProperties = {}; 
      cellProperties.renderer = firstRowRenderer; // removing this line makes the format work 
      cellProperties.type = 'numeric'; 
      cellProperties.format = '0.00 $'; 
      cellProperties.language = 'de'; 

      return cellProperties; 
     } 
    });} 

    ExampleTable(); 

Hat jemand eine Lösung dafür gefunden? Vielen Dank!

Antwort

1

können Sie versuchen, diese Zeile zu ändern:

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

Durch diese Zeile:

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

Viel Glück;)