Estoy creando una cuadrícula de la siguiente manera. Quiero cambiar el estilo de la fila dependiendo de una condición Además, la columna de fecha debe tener un valor en formato -> 'dmY'. Si la condición se cumple, quiero cambiar el color de la fila. Pero debido a que la columna de fecha tiene su propio método de renderizado, el renderizador predeterminado no funciona. ¿Cómo podemos ejecutar ambos métodos de renderizado?
columns : {
defaults : {
renderer : function(value, meta, record) {
if (record.get('status') === false) {
meta.style = "color:#FF0000;";
}
return value;
}
},
items : [ {
text : 'Number',
dataIndex : 'number',
flex : 1
}, {
text : 'Type'),
dataIndex : 'type',
flex : 1
}, {
text : 'Date',
dataIndex : 'date',
renderer : Ext.util.Format.dateRenderer('d.m.Y'),
flex : 1
}]
}
El renderizador predeterminado solo se llama cuando no tiene un renderizador en una columna, puede hacer un renderizador en la columna de fecha que formatee la fecha y aplique el metaestilo también.
columns: {
defaults: {
renderer: function(value, meta, record) {
if (record.get('status') === false) {
meta.style = "color:#FF0000;";
}
return value;
}
},
items: [{
text: 'Number',
dataIndex: 'number',
flex: 1
}, {
text: 'Type',
dataIndex: 'type',
flex: 1
},
{
text: 'Date',
dataIndex: 'date',
renderer: function(value, meta, record) {
if (record.get('status') === false) {
meta.style = "color:#FF0000;";
}
return Ext.Date.format(value, 'd.m.Y');
},
flex: 1
}]
}
Usando la función de renderizador desde el controlador
Ext.define('Fiddle.view.GridController', {
extend: 'Ext.app.ViewController',
alias: 'controller.gridcontroller',
dateRenderer: function (value, meta, record) {
if(record.get('status') === false) {
meta.style = "color:#FF0000;";
}
return Ext.Date.format(value, 'd.m.Y');
},
})
Ext.create('Ext.grid.Panel', {
controller: 'gridcontroller',
columns:
//other properties...
{
text: 'Date',
dataIndex: 'date',
renderer: 'dateRenderer',
flex: 1
}
//other properties...
})
Violín aquí
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras