使用渲染器时,HandsOnTable单元格值会更改

时间:2017-03-08 15:47:15

标签: number-formatting handsontable

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

这是渲染器,单元格函数和列定义:

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位。

1 个答案:

答案 0 :(得分:0)

我有类似的问题。 在同一页面上,我有两个handontables,我需要为两者上的活动行着色。所以我按照链接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中,您将获得collumn-cell的类型。 希望它能帮助你。

祝你好运