0
votes

am creating some Advanced Datagrid with actionscript.

I have created an actionscript class where I extend the VBox object:

package core { import mx.containers.VBox; import mx.controls.TextInput;

public class customItemRender extends VBox { public function customItemRender(_TextInput:TextInput, _TextInput2:TextInput) { //TODO: implement function super.addChild(_TextInput); super.addChild(_TextInput2);
} } }

The problem comes up when I declare de itemrender property on the data grid:

AdvancedDataGridColumn.itemRenderer = new ClassFactory(customItemRender(_TextInput1,_TextInput2));

The compiler wont let me instanciate my customItemRender.

Does any one know if there is an alternative solution to solve the problem?

Thanks in advance for you helps,

Regards Javier

3

3 Answers

2
votes

private var _ItemRendere:ClassFactory;

private function get MyItemRendere():ClassFactory
{
    if (_ItemRendere == null)
    {
        _ItemRendere = new ClassFactory();
        _ItemRendere.generator = customItemRender;
        _ItemRendere.properties = {
            _TextInput1:MY_TextInput1_OBJECT, 
            _TextInput2:MY_TextInput2_OBJECT
                };
    }
    return _ItemRendere;
 }

then you can use

AdvancedDataGridColumn.itemRenderer = MyItemRendere;
0
votes

I've only tried to do this using MXML. In that case, i usually have to wrap the IListItemRenderer instance in mx:Component tags. I'm not exactly sure what is going on programmatically when I do this, but it works. The reason is that the itemRender is actually looking for an instance of IFactory rather than an instance so I suppose to do this strictly using AS you would need to create your own IFactory implementation.

e.g.

<mx:List>
 <mx:itemRenderer>
  <mx:Component>
   <mx:Text />
  </mx:Component>
 </mx:itemRenderer>
</mx:List>
0
votes

ClassFactory's constructor has a Class as a parameter, not an instance. You need to call:

new ClassFactory(customItemRender);

and not:

new ClassFactory(new customItemRender(_TextInput1,_TextInput2));

or:

new ClassFactory(customItemRender(_TextInput1,_TextInput2));

Now, since the constructor will not be called with reference to TextInput1 and TextInput2, you'll need to instantiate your own TextInputs in the custom renderer itself. (But this is a good thing, if you continue to call new customItemRender(_TextInput1, _TextInput2), then the two TextInputs will only be added to the LAST instance of customItemRender, and all of the others will not have these two objects ).