I use a Radio Cell Renderer inside a datagrid; but the radio buttons get selected on mouse-hover. Is this a problem in the Cell Renderer or the datagrid?
The RadioCellRenderer class is :
import mx.core.UIComponent
import mx.controls.RadioButton
class com.flashdb.RadioCellRenderer extends UIComponent
{
private var radio : MovieClip;
private var listOwner : MovieClip;
private var getCellIndex : Function;
private var getDataLabel : Function;
private static var PREFERRED_HEIGHT = 16;
private static var PREFERRED_WIDTH = 20;
public function RadioCellRenderer() {
}
public function createChildren(Void) : Void
{
radio = createObject(“RadioButton”, “radio”, 1, {styleName:this, owner:this});
radio.addEventListener(“click”, this);
size();
}
public function size(Void) : Void
{
radio.setSize(PREFERRED_WIDTH, PREFERRED_WIDTH);
radio._x = (__width - PREFERRED_WIDTH)/2;
radio._y = (__height - PREFERRED_HEIGHT)/2;
}
public function setValue(str:String, item:Object, sel:Boolean) : Void
{
radio._visible = (item!=undefined);
radio.selected = item[getDataLabel()];
}
public function getPreferredHeight(Void) : Number
{
return PREFERRED_HEIGHT;
}
public function getPreferredWidth(Void) : Number
{
return PREFERRED_WIDTH;
}
public function click()
{
var index = getCellIndex().itemIndex;
var columName = getDataLabel();
trace(“listOwner.dataProvider.length---->”+listOwner.dataProvider.length);
for( var i:Number = 0; i < listOwner.dataProvider.length; i++ ) {
listOwner.dataProvider.editField(i, columName, false);
}
listOwner.dataProvider.editField(index, columName, true);
trace("Radio value is: "+radio.value);
trace("You clicked on: "+radio);
}
}