2

这是我所拥有的(它的相关部分)。

Handsontable 选项:

data: [[new Date(2013,5,26,17,00,00),24.7025,null,29.018950276,19.7746530531,null,null,null,null,null,null,55,110,165,220], ...

columns: [{type:'date', dateFormat: 'mm/dd/yy'},{type: 'numeric',format: '0,0.00'}, ...

结果如可动手操作的日期单元格中所示:

Wed Jun 26 2013 17:00:00 GMT+0200 (Romance Daylight Time)

我想将其显示为“dd-MM-yyyy HH:mm”,但我还没有找到这样做的方法……显示似乎总是坚持默认的日期格式,如上所示。

4

3 回答 3

2

在这种情况下,您可以使用自定义渲染器。

我已经创建了 jquery.handsontable.exts.js,并且正在使用 handsontable.js 加载它。

此示例脚本使用 renderFormat 或 dateFormat 属性正确呈现日期。

    /**
    * Handsontable date renderer
    * @param {Object} instance Handsontable instance
    * @param {Element} TD Table cell where to render
    * @param {Number} row
    * @param {Number} col
    * @param {String|Number} prop Row object property name
    * @param value Value to render (remember to escape unsafe HTML before inserting to DOM!)
    * @param {Object} cellProperties Cell properites (shared by cell renderer and editor)
    */
    Handsontable.DateRenderer = function (instance, TD, row, col, prop, value, cellProperties) {
        if (value && typeof value == "object" && value.constructor == Date) {
            // Date!
            var format = cellProperties.renderFormat || cellProperties.dateFormat || "";
            value = $.datepicker.formatDate(format, value); //value.format(format);
        }
        if (cellProperties.readOnly)
            Handsontable.TextRenderer(instance, TD, row, col, prop, value, cellProperties);
        else
            Handsontable.AutocompleteRenderer(instance, TD, row, col, prop, value, cellProperties);
    };

    Handsontable.DateCell.renderer = Handsontable.DateRenderer;
    Handsontable.cellLookup.renderer.date = Handsontable.DateRenderer;
于 2013-07-24T15:07:39.290 回答
1

4 年后,我在Handsontable 文档中找到了答案。我以为我会无论如何都要分享...

hot = new Handsontable(container, {
    data: getDataFromSomewhere(),
    colHeaders: ['SomeText', 'SomeDate'],
    columns: [
      {
        // 1st cell is simple text, no special options here
      },
      {
        type: 'date',
        dateFormat: 'MM/DD/YYYY',
        correctFormat: true,
        defaultDate: '01/01/1900'
      }
    ]
});

这样做的缺点是您需要使用三个额外的库:

  • /dist/moment/moment.js
  • /dist/pikaday/pikaday.js
  • /dist/pikaday/css/pikaday.css

它会自动添加一个daypicker(这不是我想要的……我也需要HH:mm)。

于 2017-06-08T14:10:58.610 回答
0
    columns: [
        { data: 'Changed', renderer: dateTimeRenderer, readOnly: true },
    ],

function dateTimeRenderer(instance, td, row, col, prop, value, cellProperties) {
    value = typeof value === "undefined" ? '' : new Date(value).toLocaleString();
    return Handsontable.renderers.TextRenderer(instance, td, row, col, prop, value, cellProperties);
}
于 2020-06-07T22:57:35.450 回答