如何在光滑网格自定义单元格格式化程序中应用自定义 Fliter 格式化程序



如何在光滑网格自定义单元格格式化程序中应用自定义角度过滤器格式化程序

假设我有一个角度客户过滤器格式化程序,可以将日期从一种格式转换为另一种格式。

var dateFilter = this.$filter('myDateFilterFormatter')('2006-04-07'); 

它返回为 4/7/06。

如何在光滑网格自定义单元格格式化程序中使用 myDateFilter格式化程序

我试过这种方式

this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ value | myDateFilterFormatter +"</p>";
};

并尝试

this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ this.$filter('myDateFilterFormatter')(value) +"</p>";
};

这两种方式都以错误告终。我无法在光滑的网格行格式化程序中应用自定义过滤器。你能建议一下,如何在光滑的网格中使用自定义过滤器。

dateFormatter函数内部的this是指函数本身。

通常使用类似的东西

var self = this;
... code ...
this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ self.$filter('myDateFilterFormatter')(value) +"</p>";
};

为了回答第二个查询,调用格式化程序的代码是,例如

function updateCell(row, cell) {
var cellNode = getCellNode(row, cell);
if (!cellNode) {
return;
}
var m = columns[cell], d = getDataItem(row);
if (currentEditor && activeRow === row && activeCell === cell) {
currentEditor.loadValue(d);
} else {
cellNode.innerHTML = d ? getFormatter(row, m)(row, cell, getDataItemValueForColumn(d, m), m, d) : "";
invalidatePostProcessingResults(row);
}
}

我想您是在询问有关访问cellNode的问题. 您可以添加

var cellNode = grid.getCellNode(row, cell);

如果你愿意,可以给你的格式化程序。

从长远来看,如果您发现访问单元节点很有用,则可以修改formatter函数以及对它的所有调用,以将cellNode添加到参数列表的末尾。但是,这将是对光滑网格代码的修改。

编辑:实际上我刚刚对此进行了测试,但它不起作用,因为在创建单元格时,格式化程序是在创建单元格之前调用的。我已经修改了最新版本的 SlickGrid 中的格式化程序,以便您可以选择返回对象{ text: 'displayText', removeClasses: 'class1 class2', addClasses: 'class1' }而不是返回字符串,并且在应用格式化程序时将删除类并将其添加到单元格中。删除一系列类允许在应用正确的新类之前清除以前的格式设置类。

最新更新