代码之家  ›  专栏  ›  技术社区  ›  J. Bruni

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

  •  3
  • J. Bruni  · 技术社区  · 14 年前

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

    当PHP将其编码为JSON表示法时,它会保持空值不变:

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

    但是。。。当这个数据显示在ExtJS网格中时,它显示一个“ 无效的 “替换空值的字符串。

    我不想让它显示” 无效的 ". 我只希望它是空的(一个空字符串)。

    最简单的方法是什么?

    谢谢。

    5 回复  |  直到 14 年前
        1
  •  2
  •   Wolph    14 年前

    renderer . 你可以这样使用:

    function render(value){
        if(value === null){
            value = '';
        }
        return value;
    }
    
        2
  •  2
  •   J. Bruni    14 年前

    沃尔夫的回答是正确的。我自己的问题有点“不正确”…:-)

    事实上,我正在处理一个 treegrid

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

    渲染器 配置选项不适用(它存在并在上工作外部网格柱,但不是开着外部列表列).

    更改渲染的步骤外部列表列,这是 可用的配置选项,该选项使用 Ext.XTemplate 机制。

    下面,我将分享我的 树形 我想要的专栏:

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

    上面的配置使我的列呈现空值字符串,而不是“ “字符串,在 !


    最后一点:我对沃尔夫的答案投了赞成票,因为它是正确的。我的问题是误导性的,我不想更改/编辑它,而是分享我自己的发现作为另一个答案。我也感谢他,因为他让我专注于正确的事情。谢谢。

        3
  •  2
  •   It Grunt    14 年前

        4
  •  2
  •   Xisco    12 年前

    只需声明字段类型:“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填充网格中的数据。

        5
  •  1
  •   geographika    10 年前

    在extjs3.4中,有一个useNull属性可以为数字字段(但不是字符串)设置。

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

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

    默认为:false

    例如。

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