I would try this.
var cf:ClassFactory = new ClassFactory(yourItemRenderer);
cf.properties = {dataProvider:myCBData};
col3.itemRenderer = cf.
On 3/2/07, Steve Gustafson <[EMAIL PROTECTED]> wrote:
Ok. This is alot closer to where I am trying to get!
When I try: _col3.itemRenderer.properties = {dataProvider:myCBData};
FlexBuilder throws the following error:
Access of possibly undefined property properties through a reference with
static type mx.core:IFactory
So now it looks like I'll either have to figure out how to access the
iFactory, or learn to write my own IFactory as suggested.
It seems like this should be simpler!
Steve
On 3/1/07, Alex Harui <[EMAIL PROTECTED]> wrote:
>
> You can write you own IFactory, or you can do this:
>
>
>
> _col3.itemRenderer = new ClassFactory(comboR);
> _col3.itemRenderer.properties = { dataProvider :
> arrayToUseAsDataProvider};
>
> Then your ComboBox dataproviders will be given assigned that array.
>
>
> ------------------------------
>
> *From:* [email protected] [mailto:
> [EMAIL PROTECTED] *On Behalf Of *Steve Gustafson
> *Sent:* Thursday, March 01, 2007 3:09 PM
> *To:* [email protected]
> *Subject:* Re: [flexcomponents] Struggling with itemRenderer in DataGrid
>
>
>
> Perhaps I am not being clear. I know I can set the dataProvider within
> the component. What I need to know is how I can either change the
> dataProvider when the itemRenderer is called.
>
> I want to use this itemRenderer in multiple grids. Each grid is to use
> the itemRenderer with either a different dataProvider, or update the
> dataProvider with different data.
>
> So I'm trying to something like:
>
> public function createPositionTable():void
> {
> _col1 = new DataGridColumn;
> _col2 = new DataGridColumn;
> _col3 = new DataGridColumn;
>
> _col1.headerText= "Position";
> _col1.dataField = "Description";
> _col1.editable = true;
> _col1.width = 100;
>
> _col2.dataField = "Type";
> _col2.headerText= "Type";
> _col2.editable = true;
> _col2.width = 50;
>
> _col3.dataField = "levelCode";
> _col3.headerText = "Level Code";
> _col3.width = 150;
> _col3.editable = false;
> // HERE I SET THE itemRenderer - but want to use a different
> dataProvider
> // OR AT LEAST UPDATE THE ORIGINAL DATAPROVIDER WITH NEW DATA
> _col3.itemRenderer = new ClassFactory(comboR);
> _col3.editorDataField = "levelCode";
>
> _columns = new Array(_col1,_col2,_col3);
> _datagrid = positionsGrid;
> _datagrid.columns = _columns
> _datagrid.sortableColumns = false;
> _datagrid.dataProvider = objAdminTableGridDP;
> _datagrid.dragEnabled = false;
> _datagrid.dragMoveEnabled = false;
> _datagrid.dropEnabled = false;
> _datagrid.editable = true;
> _datagrid.rowHeight = 30;
> updateTablesButton.label = 'Update Positions Table';
> }
>
> public function createDepartmentTable():void
> {
> _col1 = new DataGridColumn;
> _col2 = new DataGridColumn;
> _col3 = new DataGridColumn;
>
> _col1.headerText= "Position";
> _col1.dataField = "Description";
> _col1.editable = true;
> _col1.width = 100;
>
> _col2.dataField = "Type";
> _col2.headerText= "Type";
> _col2.editable = true;
> _col2.width = 50;
>
> _col3.dataField = "levelCode";
> _col3.headerText = "Level Code";
> _col3.width = 150;
> _col3.editable = false;
> // HERE I SET THE itemRenderer - but want to use different dataProvider
> // OR AT LEAST UPDATE THE ORIGINAL DATAPROVIDER WITH NEW DATA
> _col3.itemRenderer = new ClassFactory(comboR);
> _col3.editorDataField = "levelCode";
>
> _columns = new Array(_col1,_col2,_col3);
> _columns = new Array(_col1,_col2,_col3);
>
> _datagrid = positionsGrid;
> _datagrid.columns = _columns
> _datagrid.sortableColumns = false;
> _datagrid.dataProvider = objAdminTableGridDP;
> _datagrid.dragEnabled = false;
> _datagrid.dragMoveEnabled = false;
> _datagrid.dropEnabled = false;
> _datagrid.editable = true;
> _datagrid.rowHeight = 30;
> updateTablesButton.label = 'Update Positions Table';
> }
>
> On 3/1/07, *Alex Harui* < [EMAIL PROTECTED]> wrote:
>
> <mx:ComboBox dataProvider="{myLevels}" …
>
>
>
> This should set you up to use the myLevels in every ComboBox.
>
>
>
> The comboBox has built-in logic to set the selectedItem based on what it
> sees in the data property. In your case you might want to override the data
> setter and choose selectedIndex then.
>
>
>
> FWIW, using VBox to wrap will be slower than ComboBox straight up.
>
>
> ------------------------------
>
--
justin w. opitz
617.771.6639
jwopitz(at)gmail.com