ExtJs:为什么numberfield在显示数据时会自动将null转换为0

pb3s4cty  于 2022-11-04  发布在  其他
关注(0)|答案(3)|浏览(140)

我有一个Extjs表单,我们可以在其中为一个人分配年龄。因此,当我在年龄字段中分配空白并将其保存到数据库时,效果很好(在数据库中,年龄为空白)。但当我尝试刷新并再次显示它时,它显示0。
我尝试使用allowBlank:true,但它不起作用。以下命令也不起作用:https://www.sencha.com/forum/showthread.php?181270-Hi-how-can-i-set-null-for-a-numberfield
表格:

Ext.define('com.view.xxxx.entities.forms.yyyyyyy', {
    statics: {
        buildItems: function ()
        {
            return [
                {
                    xtype: 'fieldset',
                    title: 'Person',
                    defaultType: 'textfield',
                    defaults: { anchor: '100%'},
                    items: [
                            {fieldLabel: 'Age', name: 'age', xtype: 'numberfield', labelWidth: 130}
                        ]
                }
            ]
        }
    }
});

如何强制数字字段按原样显示数据库中的数据,即空白字段显示为空白?

gev0vcfq

gev0vcfq1#

我的建议是使用一个将任何非数字值转换为空字符串的模型,并在表单中使用该模型:

Ext.define('Fiddle.model.ageModel', {
            extend: 'Ext.data.Model',
            requires: [
                'Ext.data.field.Field'
            ],
            fields: [{
                name: 'name'
            }, {
                name: 'age',
                convert: function (v, rec) {
                    return typeof (v) === 'number' ? v : '';
                },

            }]
        });

请参见此示例

cygmwpex

cygmwpex2#

我更喜欢在模型中使用Number字段和allowNull变量。
并且allowBlanknumberfield中必须为真。
前。

Ext.define('Person', {
    extend: 'Ext.data.Model',
    fields: [
        { name: 'age', type: 'number', allowNull: true }
    ]
});
xlpyo6sf

xlpyo6sf3#

我遇到了这个问题,将代码更改为使用allowNull选项似乎可以解决这个问题(对于Ext-js 6).没有详细说明的是,当您将一个字段定义为'null'类型,而没有将convert函数或allowNull选项设置为true时,如果该值实际上为null,则商店将其视为'0',因为'null'不是有效的'number'。我自己花了一段时间才弄明白这一点。
如果运行一个旧版本而allowNull不起作用,你可以通过另外指定一个转换函数来检查null并返回null来解决这个问题。是的,这是一个杂七杂八的东西,但在我尝试使用allowNull之前,它似乎对我很有效。如果你根本不指定allowNull,它也适用于v6,如下所示:

{ name: 'age', type: 'number', convert: 
    function (v, rec) { 
       return (v === null ? null : v);
    }
}

我最初改变了我的应用程序,使用转换功能,并有它的工作,但切换到使用allowNull后,发现这篇文章,因为这是更干净/更清晰,但转换功能选项是一个我发现在一个old Sencha forum post

相关问题