Ich habe eine Rasterkomponente mit Speicher in meiner Ansichtsseite.Sencha Touch - Wie ändert man die Zeilenfarbe eines Rasters dynamisch?
{
xtype: 'grid',
store : { xclass : 'ABC.Store.MyStoreItem'},
}
Ich mag würde die Zeilenfarbe ändern, hängt von dem Wert im Speicher.
Leider habe ich nur die Lösung für ExtJS gefunden, aber nicht für Sencha Touch.
In ExtJs kann die Zeilenfarbänderung auf diese Weise sein: Styling row in ExtJS
viewConfig: {
stripeRows: false,
getRowClass: function(record) {
return record.get('age') < 18 ? 'child-row' : 'adult-row';
}
}
Ich mag die genau gleiche Sache in Sencha Touch haben, aber ich kann nicht die gleiche Methode in der Sencha Touch finden API-Dokument, nur in ExJs verfügbar.
Hat jemand eine andere Idee, wie diese Funktion in Sencha Touch durchgeführt werden kann?
Aktualisiert: Versuchte Antwort ‚JChap
Ich bin mit Sencha Touch 2.3
Nach JChap Antwort. Ich habe die Grid-Klasse auf diese Weise überschrieben. Der Speicherort der Datei App> Überschreibung> Gitter> Grid.js, mit dem Code:
Ext.define('ABC.override.grid.Grid', {
override: 'Ext.grid.Grid',
updateListItem: function(item, index, info) {
var me = this,
record = info.store.getAt(index);
if (me.getItemClass) {
var handler = me.getItemClass(),
scope = me;
if (!handler) {
return;
}
if (typeof handler == 'string') {
handler = scope[handler];
}
cls = handler.apply(scope, [record, index, info.store]);
if(item.appliedCls) {
item.removeCls(item.appliedCls);
}
if (cls) {
item.addCls(cls);
item.appliedCls = cls;
}
}
this.callParent(arguments);
}
});
Und meine Art und Weise, es zu benutzen unterscheidet sich von JChap, unten ist meine Ansicht Seite
Ext.define('ABC.view.Upload', {
extend: 'Ext.Container',
xtype: 'uploadList',
config: {
id: 'upload_view_id',
items: [
{
xtype: 'container',
layout: 'vbox',
height:'100%',
items:[
{
xtype: 'grid',
itemId : 'gridUpload',
store : { xclass : 'ABC.store.MyStoreItem'},
config: {
itemClass: function(record, index) {
var cls = null;
if(record.get('status') === 'new') {
cls = 'redRow';
}
else {
cls = 'greenRow';
}
return cls;
}
},
columns: [ ....]
}
]
}
]
}
});
Ich glaube, ich benutze die Override-Klasse nicht korrekt, kann jemand meinen Fehler aufzeigen? Vielen Dank.
Hallo JChap, danke für deine Antwort. Ich habe versucht, die Grid-Klasse nach Ihrem Vorschlag zu überschreiben, aber es funktioniert nicht für meinen Fall. Ich habe meinen Befund zu meiner Frage aktualisiert, stört es Sie, auf meinen Fehler hinzuweisen? Vielen Dank. –