If you are using a vBox as the container for the comboBox, you could have a
bindable public property var selectedIndex:int and tehn have the internal
comboBox's selectedIndex bound to that (in mxml of course, via actionscript,
you would need setters to set teh cb.selectedIndex)

then inside that cf.properties = {selectedIndex:#}

On 3/2/07, Steve Gustafson <[EMAIL PROTECTED]> wrote:

I've made major progress

I can now dynamically change the dataProvider for my comboBox
itemRenderer.  Now I just need to figure out how to change the selected
index for individual rows.

I am open to suggestions!

Steve

public var cbRenderer:ClassFactory = new ClassFactory(comboR);

private function getLevelsForCBResult(event:Object):void
{
    myCBData = event.result as ArrayCollection;
    cbRenderer.properties = {dataProvider:myCBData};
}

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;
    _col3.itemRenderer = cbRenderer;  // SET THE itemRenderer WITH NEW
dataProvider
    _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';
}


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

Reply via email to