我正在尝试为 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 的扩展器属性调用我的工作表扩展器。
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"覆盖。
当我使用"这个.cfg..."我收到一个未捕获的类型错误:无法读取未定义的属性"注册渲染器"。
当我使用"手工表..."时我没有收到错误,但也没有结果,因为我想这种方法很可能没有将渲染器添加到可动手的实际实例中。
有没有办法在pe:sheet中添加自定义单元格渲染器,或者至少使单元格渲染HTML?
我是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);
}
}