【问题标题】:Adding custom cell renderers in pe:sheet在 pe:sheet 中添加自定义单元格渲染器
【发布时间】:2019-10-13 21:50:01
【问题描述】:

我正在尝试为 pe:sheet 组件实现自定义单元格渲染器。

由于这个组件基于 Handsontable,我尝试了这里描述的方法: https://handsontable.com/docs/6.2.2/demo-custom-renderers.html

我还更改了从 Handsontable.renderers.registerRenderer('myRenderer', myCustomRenderer); 注册的代码 到 this.cfg.renderers.registerRenderer('myRenderer', myCustomRenderer); 试图访问 pe:sheet 中的 handsontable 实例。

我通过 pe:sheet 的扩展器属性调用我的 sheetExtender。

function sheetExtender() {
//    this.cfg.renderers.registerRenderer('myRenderer', myCustomRenderer);
//    Handsontable.renderers.registerRenderer('myRenderer', myCustomRenderer);    
    console.log(this);
}
var myCustomRenderer = function (instance, td, row, col, prop, value, cellProperties) {
    $(td).empty().append('TEST');
};

将“myRenderer”添加到 pe:sheetcolumn 的 colType 属性中,我希望列值会被“TEST”覆盖。

当我使用 'this.cfg...' 时,我得到一个 Uncaught TypeError: Cannot read property 'registerRenderer' of undefined。

当我使用“Handsontable...”时,我没有收到错误,但也没有结果,因为我猜,这种方法可能没有将渲染器添加到 handsontable 的实际实例中。

有没有办法在 pe:sheet 中添加自定义单元格渲染器,或者至少让单元格渲染 HTML?

【问题讨论】:

    标签: primefaces primefaces-extensions


    【解决方案1】:

    我是 pe:sheet 的作者。如果要自定义渲染器,可以执行以下操作...

    这是在组件中发生的地方:https://github.com/primefaces-extensions/core/blob/master/src/main/resources/META-INF/resources/primefaces-extensions/sheet/1-sheet.js#L59-L116

    你可以用你自己的覆盖默认的TextCellRenderer

    function sheetExtender() {
       this.cfg.textCellRenderer = function (instance, td, row, col, prop, value, cellProperties) {
            Handsontable.renderers.HtmlRenderer.apply(this, arguments);
    
            // call your custom renderer method here
            myCustomerRenderer(instance, td, row, col, prop, value, cellProperties);
       }    
    }
    
    

    【讨论】:

    • 您好,Melloware,非常感谢!像魅力一样工作。顺便说一句,我喜欢这个组件。很棒的工作!
    • 非常感谢您发布深思熟虑的问题并标记为解决方案!
    猜你喜欢
    • 2018-12-26
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2020-03-22
    • 1970-01-01
    • 2011-11-08
    相关资源
    最近更新 更多