在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文件中加载商店时是否需要应用格式? 我的猜测是后者??
答案 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