Ext JS 在摘要中排除空值 Ext.grid.feature.Summary 在网格中

Posted

技术标签:

【中文标题】Ext JS 在摘要中排除空值 Ext.grid.feature.Summary 在网格中【英文标题】:Ext JS exclude null values in summary Ext.grid.feature.Summary in grid 【发布时间】:2017-06-07 14:33:57 【问题描述】:

我的数据存储中有一些空值。我正在使用 ftype summary 来显示摘要行,当它计算 summary(min/max) 时,它会将 null 视为 min/max 。有没有办法排除空值并计算摘要。我创建了如下网格

var grid = Ext.create('Ext.grid.Panel', 
    width: width,
    height: height,
    //frame: true,
    cls: 'gridPadding, x-panel gridPadding x-grid-with-row-lines x-panel-default-framed x-grid',
    id: 'dashboardSearchGrid_' + DivId,
    renderTo: DivId,
    buffered: true,
    store: store,
    plugins: [
        Ext.create('Ext.ux.grid.plugin.GroupingPanel')
    ],
    features: [
        ftype: 'summary',
        dock: 'bottom'
    ]
);

【问题讨论】:

展示一些演示小提琴 【参考方案1】:

我遇到了同样的问题,我没有找到配置它的解决方案。

应该可以的:

您可以在列定义中使用渲染器

renderer: function (value, meta, record) 
   if (value === null || value === "") 
     value = 0;
                   
return value;

或者您可以在模型定义中使用转换或计算来操作数据。

http://docs.sencha.com/extjs/6.0.1/classic/Ext.data.field.Field.html#cfg-convert

【讨论】:

【参考方案2】:

我通过修改 ext-all.js 源代码中的 getMin 函数来实现它,如下所示

getMin: function(records, field) 
var i = 1,
    len = records.length,
    value, min;

if (len > 0) 
    min = records[0].get(field);


for (; i < len; ++i) 
    value = records[i].get(field);
    if(value == null)
        continue;
    
    if (value < min || min == null) 
        min = value;
    

return min;

【讨论】:

以上是关于Ext JS 在摘要中排除空值 Ext.grid.feature.Summary 在网格中的主要内容,如果未能解决你的问题,请参考以下文章

ext js 传入行号后grid自动选中

Ext js的grid如何锁定列?

是否可以在 extjs 的网格面板中显示多个摘要行?

Ext Js 6.2.1 classic grid 滚动条bug解决方案

Ext.js 4.2 Grid多选时禁止点击单元格选中,只能点击复选框选中

ext表单合并行