使用Extjs的空白数字字段

时间:2018-09-24 06:55:54

标签: extjs

enter image description here我在一个网格中有4列,即数量,浪费,成本,最终成本。在网格的最后一行,我必须显示合并的最终成本,而没有其他显示。 我的问题是,在最后一行的“数量,浪费和成本”列中,显示0,而在商店中,这些列的数据不在最后一行。

我只想在这些列上显示空值。

数据:[{“名称”:“ Part-0000112-01”,“浪费”:“ 4.63”,“ Unit_Cost”:“ 7.00”,“数量”:“ 7.2200”,“类型”:“织物” ,“ Net_Consumption”:“ 11.8500”,“ totalCost”:“ 82.95”},{“ Name”:“ Part-0000114-01”,“ Wastage”:“ 0.0”,“ Unit_Cost”:“ 1.00”,“ Quantity” :“ 10.0000”,“类型”:“结构”,“ Net_Consumption”:“ 10.0000”,“ totalCost”:“ 10.00”},{“名称”:“ Part-0000116-01”,“浪费”:“ 2.0” ,“ Unit_Cost”:“ 1.00”,“ Quantity”:“ 10.0000”,“ Type”:“ Trim”,“ Net_Consumption”:“ 12.0000”,“ totalCost”:“ 12.00”,},{“ Name”:“ Part -0000118-01“,” Wastage“:” 0.0“,” Unit_Cost“:” 0.00“,” Quantity“:” 10.0000“,” Type“:” Trim“,” Net_Consumption“:” 10.0000“,” totalCost“: “ 0.00”},{“ totalCost”:“ 104.95”,“名称”:“总材料成本(美元)”}]

代码:

Ext.create('Ext.grid.Panel', {    
    store: BOMStore,    
    columns: [{    
        text: 'Name',    
        dataIndex: 'name'    
    }, {    
        text: 'Quantity',    
        dataIndex: 'Quantity',    
        editor: {    
            xtype : 'numberfield',       
            allowBlank : false,      
            listeners : {    
                change : function(field, newValue,o ,e) {    
                    var quantity = field.value;   
                    var selectedModel = this.up('grid').getSelectionModel().getSelection()[0];  
                    var wastage = selectedModel.get('Wastage');  
                    var unitCost = selectedModel.get('Unit_Cost');  
                    var updateTotalCost = getTotalCost(quantity,wastage,unitCost);  
                    selectedModel.set('totalCost', updateTotalCost);  
                    updateRowCosting(selectedModel);  
                }  
            }  
        }  
    }, {  
        text: 'Wastage',   
        dataIndex: 'Wastage',  
        editor: {  
            xtype : 'numberfield',   
            allowBlank : false,  
        }  
    },{  
        text: 'Cost',  
        dataIndex: 'Unit_Cost',  
        editor: {  
            xtype : 'numberfield',   
            allowBlank : false,  
        }  
    },{  
        text: 'Total Cost',  
        dataIndex: 'totalCost',  
        editor: {  
            xtype : 'numberfield',   
            allowBlank : false,  
        }  
    }]  
}); 

2 个答案:

答案 0 :(得分:0)

您可以使用renderer用作转换器,因此可以检查该行是否为最后一行并返回空字符串。

FIDDLE

Ext.create('Ext.grid.Panel', {
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [{
        text: 'Name',
        dataIndex: 'name'
    }, {
        text: 'Email',
        dataIndex: 'email',
        flex: 1
    }, {
        text: 'Phone',
        dataIndex: 'numm',
        renderer: function (value, metaData, record, rowIndex, collIndex, store) {
            if (store.indexOf(record) === (store.totalCount - 1)) {
                return '';
            }
            return value;
        }
    }]
});

答案 1 :(得分:0)

问题解决了。

下面是我的模特。

fields: [ 'Type', 'matid', 'ebomid' , 'srmid' ,'Name', 'Component_Location','Description',
                      'Article','Supplier_Item_Label','Supplier_Item_Description','UOM',
                      { name: 'Quantity', type: 'float' },{ name: 'Wastage', type: 'float' },'Wastage_Percentage','Net_Consumption','Material_Currency','Target_Cost',
                      'markupInViewMode',{ name: 'Markup', type: 'float' },'markup_Percentage','Final_Material_Cost','Sourcing_Classification','Brand_Cost','Vendor_Cost','Total_Cost']
        });

因此,如果我在Model中给定float / number类型,并且不传递对应列的数据,则默认值为0。

我们必须在字段中设置字段类型。 xtype : 'numberfield',