Vous aurez besoin d'appliquer un champ personnalisé renderer. Vous devrez ajouter une fonction init() js à votre page, ainsi qu'une méthode de rendu. Je le processus de base de l'application d'un moteur de rendu personnalisé sur mon blog: méthode
CF8 Ajax Grid: Renderers and Events
Fondamentalement, vous allez appeler votre init() après la grille a d'abord rendu, en utilisant la méthode ajaxOnLoad():
<cfset ajaxOnLoad("init") />
au sein de votre méthode init(), vous obtiendrez une référence à la grille et il est ColumnModel:
init = function() {
var myGrid = ColdFusion.Grid.getGridObject('myGridID');
var gridCM = myGrid.getColumnModel();
// The rest goes here
}
vous aurez également besoin de votre renderer méthode, que vous pouvez appliquer à une colonne:
yesNoRenderer = function(value,meta,record,row,column,store) {
if (value === 1){
return "Yes";
} else {
return "No";
}
}
Après quoi, vous aurez besoin d'appliquer le générateur de la colonne de votre choix:
gridCM.setRenderer(cm.getIndexById('myColumnName'), yesNoRenderer);
La méthode setRenderer prend l'index de colonne (à partir de 0) et la fonction à appliquer comme moteur de rendu. La méthode getIndexById() devrait fonctionner ici, mais vous devez d'abord le tester pour être sûr, et n'oubliez pas que le boîtier est important dans JavaScript.
La plupart des composants CF Ajax utilisent Ext 1.1 sous le capot. Lisez attentivement la documentation d'Adobe sur le ColdFusion JavaScript Functions, et n'oubliez pas que vous pouvez puiser dans le Ext 1.1 API sous-jacent.
Désolé pour l'ignorance, mais la dernière ligne .. cm.setRenderer ... etc Si tel était gridCM.setRenderer .. le Var créé dans la fonction init? Et, où dois-je placer cette ligne? à l'intérieur de la fonction init? En dehors de toute fonction en particulier? Merci d'avance, c'est déjà une aide géante. –
Vous avez tout à fait raison, setRenderer() fait partie de ColumnModel, et est appelé sur gridCM. Et oui, vous mettriez cela dans la méthode init(). –