在ExtJS网格中,将NULL值显示为空字符串而不是“null”字符串的最简单方法是什么?

时间:2010-08-13 01:08:33

标签: php mysql null extjs grid

我有一个服务器端脚本(PHP)返回JSON数据来填充ExtJS网格。

此数据来自MySQL查询,包含一些NULL值。

当PHP将其编码为JSON表示法时,它保持NULL完整:

{"id":"33","name":"Test1","url":null,"cls":"x-tree-noicon","expanded":true}

但是......当这些数据显示在ExtJS网格中时,它会在NULL值的位置显示“ null ”字符串。

我不希望它显示“ null ”。我只想把它弄空(一个空字符串)。

实现这一目标的最简单方法是什么?

感谢。

5 个答案:

答案 0 :(得分:2)

我不确定最简单但最让我想到的是创建自定义renderer。你可以使用这样的东西:

function render(value){
    if(value === null){
        value = '';
    }
    return value;
}

答案 1 :(得分:2)

WoLpH的回答是正确的。我自己的问题在某种程度上“不正确”......: - )

事实上,我正在处理 treegrid (Ext.ux.tree.TreeGrid),而不是常见的ExtJS网格(Ext.grid.GridPanel)。

treegrid的列是{strong> 的Ext.grid.Column类型,作为公共网格。它们属于 Ext.list.Column 类型。

这意味着渲染器配置选项不适用(它存在且适用于Ext.grid.Column,但不适用于Ext.list.Column)。

要更改Ext.list.Column的呈现,可以使用 tpl 配置选项,该选项使用Ext.XTemplate机制。

下面,我分享了 treegrid 列的配置,该列完成了我想要的操作:

tpl: '<tpl if="url === null"></tpl><tpl if="url !== null">{url}</tpl>'

上面的配置使我的列在 treegrid 中为NULL值呈现空字符串,而不是“ null ”字符串!


最后说明:我投票支持WoLpH的答案,因为它是正确的。我的问题是误导,我宁愿不改变/编辑它,而是作为另一个答案分享我自己的发现。我也感谢他,因为它让我专注于正确的事情。感谢。

答案 2 :(得分:2)

您的另一个选择是从后端处理它。您需要在结果集中检查任何NULL实例,并将它们转换为空字符串,然后再将其返回给客户端。

答案 3 :(得分:2)

您是否定义了Ext.data.Model?如果你定义和Ext.data Model并在Ext.data.Store中使用它来读取JSON字符串非常容易......

您只需声明字段类型:'auto'

试试这个:

Ext.define('testModel', {
        extend  : 'Ext.data.Model',
        fields  :[
                     {name: 'Id', type: 'int'},
                     {name: 'name', type: 'string'},
                     {name: 'url', type: 'auto'},
                     {name: 'cls', type: 'string'},                     
                     {name: 'expanded', type: 'boolean'}
                  ]     
    });


var testStore = Ext.create('Ext.data.Store', {
                         model  : 'testModel',
                         proxy  : {
                                      type   : 'memory',
                                      reader : {type:'json'}
                                  }
                });

并使用testStore填充网格中的数据。

答案 4 :(得分:1)

在ExtJS 3.4中,有一个useNull属性,可以为数字字段设置(尽管不是字符串)。

http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.data.Field-cfg-useNull

  

(可选)将接收的数据转换为数字类型时使用   (int或float)。如果无法解析该值,则为null   如果useNull为true,则使用,否则该值为0.默认为   假

     

默认为:false

E.g。

{
    name: 'myId',
    type: 'int',
    useNull: true
},