我在使用extjs渲染下面的折线图时遇到问题。具体来说,最后六个值为空,它们(正确地)没有显示在系列行上,但(错误地)显示了一个标记点(见下图右上角)。
我将数据库中的图形数据作为json:
// data store fields
Ext.define('Graphs', {
extend: 'Ext.data.Model',
fields: [
{name: 'the_quota', type: 'int'},
{name: 'count_pt_year', type: 'int'},
{name: 'date_string', type: 'string'}
]
});
// get the graph data
var graphStore = Ext.create('Ext.data.Store', {
model: 'Graphs',
proxy: {
type: 'ajax',
url: 'sqlRequest.jsp?queryName=events_getGraph',
timeout: 160000,
reader: 'json'
},
autoLoad:false
});
如果我更改查询以将这些空值返回为空白(''
),那么json阅读器会将它们转换为零,并且值的底部显示为零 >一个系列线,更糟糕的是将标记贴在天花板上而没有串联线。
我无法在Ext.chart.Series
中找到任何配置选项来隐藏图表上的空值。我也没能在Ext.data.Store
中找到一个配置选项来将空白作为空格而不是“0”返回。
寻找其他一些解决方法。
或者有没有人在图书馆内解决这些问题(ext-all.js)?
答案 0 :(得分:7)
Ext.data.Field
下有一个名为useNull
的配置选项。如果收到的数据无法解析为数字,则将使用null
。到目前为止,我不记得是否只能解决这个问题,而且我有一次使用自定义转换函数的记忆:
convert: function(value){
if(typeof value !=== 'number') // or other similar conversion
return undefined;
return value;
}
如果这不起作用,您可能需要自定义商店/阅读器,以完全排除包含不良null
值的记录。
编辑 - 使用useNull
看起来像这样:{name: 'someName', type: 'int', useNull: true}