extjs将格式应用于网格列

时间:2011-02-09 19:14:46

标签: extjs

在extjs中,如果我有这样的网格定义:

xtype: 'grid',
store: 'someStore',
flex: 1,
frame: true,
loadMask: true,
titleCollapse: true,
cls: 'vline-on',
ref: '../someGrid',
id: 'someGrid',
columns: [
           {
             xtype: 'gridcolumn',
             header: 'ID',
             dataIndex: 'someID',
             sortable: true,
              width: 100
            }

有没有办法将一些格式应用于此列?例如,这个字段是一个数字,如果我想设置一个小数精度..我可以这样做吗?或者在我的java文件中加载商店时是否需要应用格式? 我的猜测是后者??

4 个答案:

答案 0 :(得分:9)

使用“渲染器”选项。你可以在那里定义你的功能。例如,我想在某些标签中显示一些ID:

columns: [
       {
         xtype: 'gridcolumn',
         header: 'ID',
         dataIndex: 'someID',
         sortable: true,
         width: 100,
         renderer: function(value) {
             // your logic here
             return "<b>" + value + "</b>";
         }
        }

答案 1 :(得分:1)

如果要在网格列中显示小数精度,则应在“float”类型的商店中定义dataindex:

...
, {name: 'column_data_name', type: 'float'}
...

然后在网格列定义中,您应该按照KomarSerjio的建议指定渲染器并使用它。

function floatRenderer(value) {
    if (value) {
        var val = value.toFixed(2);

        return addSeparatorsNF(val, '.', ',', '.');
    }
    else return "";
}
...
, { id:'column_data_name', header: 'label', dataIndex: 'column_data_name' , renderer: floatRenderer ,  align: 'right' }
...

建议使用 addSeparatorsNF 功能here

答案 2 :(得分:0)

要将网格十进制值格式化为在指向两个数字之后进行限制,或者直到您想要将以下代码用于您的列:     渲染器:Ext.util.Format.numberRenderer('00 .00')

答案 3 :(得分:0)

我尝试了渲染器配置KomarSerjio建议并且在使用Sencha Ext JS 6时它对我来说非常出色。我用它来填充我收到的一些时间数据,这些数据缺少前缀零以使其成为24小时时间。所以我尝试了以下内容,效果很好!谢谢。

Ext.define('ViewLL.view.main.List', {
    extend: 'Ext.grid.Panel',
    xtype: 'mainlist',
    reference: 'mainList',
    flex: 1,


    requires: [
        'ViewLL.store.Datastore'
    ],

    title: 'Records',

    store: {
        type: 'datastore'

    },

    columns: 
        { text:'Pln On Site Time', 
          dataIndex:'plnOnSiteTime', 
          renderer: function (number) {
          if (number<=2400) { number = ("000"+number).slice(-4); }
          return number;
          }
        }

});

在渲染器配置之前,我的网格显示了值,例如926,800,1000。 通过渲染器后添加功能配置我的网格显示值,例如0926,0800,1000