DataGrid - HtmlCellRenderer v1.30
Updated for MX 2004 et Flash 8
Cet exemple montre l'utilisation de Html dans des cellules d'un DataGrid. On utilise un HtmlCellRenderer.
15 Septembre 2005 : version compatible Flash MX 2004 et Flash 8
29 Septembre 2004 : Si vous rencontrez des problèmes avec le HtmlCellRenderer, consultez la section Tips for HtmlCellRenderer
18 janvier 2004 : Les commentaires sur le code de Nigel Pegg (Component Guru chez Macromedia). Merci Nigel.
Explication
On utilise une classe HtmlCellRenderer.as qui se veut "générique". La valeur Html à afficher est calculée par une fonction htmlFunction (qui tient compte de la colonne et de la valeur de la cellule).
Exemple d'utilisation
Importer la feuille de style pour le HtmlCellRenderer de la façon suivante :
HtmlCellRenderer.CssUrl = "amazon.css";
Déclarer un DataGridColumn de la façon suivante :
import mx.controls.gridclasses.DataGridColumn;
var gc1 = new DataGridColumn("ProductName");
gc1.width = 250;
gc1.headerText = "Title:";
gc1.cellRenderer = "HtmlCellRenderer";
gc1.htmlFunction = amazonHtmlFunction;
Déclarer la fonction amazonHtmlFunction
de la façon
suivante :
amazonHtmlFunction = function (itemObj:Object, columnName:String)
{
if (itemObj == undefined || columnName == undefined)
{
return;
}
var productName = itemObj.ProductName;
switch (columnName) {
case "ProductName":
html
= "<p
class='product'>"+productName+"</p>";
return
html;
break;
}
}
Flash 8
Du point de vue applicatif, Flash MX2004 et Flash 8 ne traitent pas les noeuds XML de type Object de la même façon. Pour que cette application fonctionne dans MX2004 et Flash8, il a fallu ajouter un attribut MainAuthor dans le XMLConnector avec un xpath de valeur "Authors/Author".
Version
version 1.30 - 15 Sep 2005 : version compatible Flash MX2004 et Flash 8.
Il
est possible d'utiliser HtmlCellRenderer dans un header de Datagrid.
version 1.25 - 12 Jan 2004 : optimisation du chargement de la feuille de style
version 1.2 - 22 Déc 2003 : correction d'un bug de sélection
version 1.1 - 7 Nov 2003 : correction d'un bug de ré-affichage lors du scroll