2017-03-08 72 views
0

当我使用函数更改HandsOnTable单元格的背景时,单元格中呈现的值更改为小数点后1位。我以为这是因为我无意中删除了格式字符串,但这看起来不正确。使用渲染器时HandOnTable单元格值发生更改

这是渲染器,细胞功能和列定义:

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, 
    } 
]; 

我如何才能确保其具有细胞,例如,1254.23保留小数点后两位 - 在我的表中的第三列呈现2小数位,但第二个只有1个地方。

回答

0

我有一个类似的问题。 在同一页面我有两个手表,并且我需要为两个主动行着色。所以我遵循链接https://docs.handsontable.com/0.31.1/demo-conditional-formatting.html

其中有行的例子:

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

而该行给我带来了很多的问题,有复选框,数字,下拉菜单等行。我可能弄错了,但据我所知,他们将任何东西都转换为文本。我通过一个问题的轨迹解决了我的问题https://github.com/handsontable/handsontable/issues/732

正如你所看到的,所有的单元格都有你自己的类型,并且类型必须被应用一个不同类型的渲染器。

 case 'text': 
      Handsontable.TextCell.renderer.apply(this, arguments); 
      break; 
     case 'autocomplete': 
      Handsontable.AutocompleteCell.renderer.apply(this, arguments); 
      break; 
     case 'checkbox': 
      Handsontable.CheckboxCell.renderer.apply(this, arguments); 
      break; 
     case 'numeric': 
      Handsontable.NumericCell.renderer.apply(this, arguments); 
      break; 
     case 'date': 
      Handsontable.DateCell.renderer.apply(this, arguments); 
      break; 
     case 'handsontable': 
      Handsontable.HandsontableCell.renderer.apply(this, arguments); 
      break; 
     default: 
      Handsontable.TextCell.renderer.apply(this, arguments); 
      break; 

从colDefs中,您将获得柱状单元的类型。 希望它可以帮助你。

好运