Use a combo box in a CFGrid

This is a great example, and it’s great for learning what actionscript can do… It uses an import of an actionscript file to put a combo box in a cell in a cfgrid… it’s awesome.View the example

Here is the original Post I want to be able to remember this stuff so i blog it.

Grid.cfm

—————

<cfif parameterExists(form.submit_btn)>

<CFDUMP var=“#form#”>

</cfif>

<cfform format=“Flash” skin=“haloSilver” width=“400” height=“300”>

<cfsaveContent variable=“onLoad”>

function(){

_level0.myGrid.rowHeight=25;

//applying the cellRenderer ‘GridRenderer.as’ to the 4th column _level0.myGrid.getColumnAt(3).cellRenderer = GridRenderer;

}.call()

</cfsavecontent>

<!— grid with 3 columns name, firstName, department —>

<cfgrid name=“myGrid”>

<cfgridColumn name=“name”>

<cfgridColumn name=“firstName”>

<cfgridColumn name=“department”>

<cfgridrow data=“Maegerman, Philippe, 1“>

<cfgridrow data=“Fonda, Nahuel, 2“>

</cfgrid>

<cfinput type=“submit” name=“submit_btn” value=“Submit to see the form dump”>

<!— onLoad trigger —>

<cfinput type=“text” visible=“No” width=“0” height=“0” name=“trigger2” bind=“{1==2?”:#onLoad#}”>

</cfform>

and here is the actionscript file that is needed, put them in the same directory, and it will work.

GridRenderer.as

——————-

import mx.controls.ComboBox;

class GridRenderer extends mx.core.UIComponent{

var combo;

var listOwner : MovieClip;

var getCellIndex : Function;

var getDataLabel : Function;

function createChildren(Void) : Void{

combo = createClassObject( ComboBox, “combo”, 1, {owner:this});

combo.dataProvider = [{data:1,label:’CF_Pim’}, {data:2,label:’AsFusion’}];

combo.addEventListener(“change”, this);

}

function getPreferredHeight(Void) : Number{

return combo != undefined ? 25:0;

}

function setValue(str:String, item:Object){

var val = item.department;

for(var i = 0; i < combo.dataProvider.length; i++){

combo.dataProvider[i].data == val ? combo.selectedIndex = i : ”;

}

}

function change() {

listOwner.editField(getCellIndex().itemIndex,

getDataLabel(), combo.selectedItem.data);

}

}

View the example

Leave a comment