Im XmlReader von ExtJS individuell konvertieren.
27. Januar 2009Der Ext.data.XmlReader in dem ExtJs Framework ist einer wunderbare Sache. Mit ihm lassen sich XML Daten per Ajax wunderbar auslesen und verarbeiten. Dieser Reader wird in der Regel in Grids verwendet. Im Reader definiert man auch den Dataindex für das Grid und dessen Header. Darauf wiederum greifen bestimmte Plugin, wie das Grid Filter Plugin zu.
In meinen Projekt kam es öfters vor das die Werte nicht eins zu eins aus der XML Datei übernommen wurden, sondern mittels einer individuellen Render Funktion für die Ausgabe abgepasst wurde.
cm: new Ext.grid.ColumnModel([
{
header: "XY",
width:80,
sortable:true,
dataIndex:'abc',
renderer :function(...
},
Das funktioniert zwar einwandfrei, aber da das nur in der Ausgabe geschieht, kann ich nicht nach dieser Spalte sortieren, oder in dieser per Filter suchen.
Auch an anderen Stellen habe ich deshalb nach einer Möglichkeit gesucht, den Wert im Reader manuell anzupassen.Versteckt in der der Dokumentation der Klasse Ext.data.Record habe ich die Möglichkeit einer convert Funktion gefunden.
Neben dem Mapping kann man über die Eigenschaft convert eine Callback Funktion angeben mit der man den Wert individuell bearbeiten kann.
reader: new Ext.data.XmlReader({
record: 'item'
}, [{
name: 'nominal',
mapping: 'price@nominal',
convert:function(v,r){
var value = "K";
if(parseFloat(v)<0){
value = "V";
}
value += '-' + Ext.DomQuery.selectValue('base-currency', r);
value += '/' +Ext.DomQuery.selectValue('quote-currency', r);
return value;
}
}
Somit erzeuge ich einen individuellen Dataindex nach dem ich auch sortieren und filtern kann.
Tags: ExtJs, Javascript
Der Beitrag wurde am Dienstag, den 27. Januar 2009 um 19:59 Uhr veröffentlicht und wurde unter Javascript abgelegt. du kannst die Kommentare zu diesen Eintrag durch den RSS 2.0 Feed verfolgen. du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.