You will need the item renderer to act as an item editor. Also, you will need 
to add an extra field to the data provider to hold this value. On itemEditEnd 
event, update the dataprovider to reflect the change.

--- In flexcoders@yahoogroups.com, "sdl1326" <azsl1326-email@...> wrote:
>
> I have a custom itemrenderer for a datagrid's column that contains a
> dropdownlist (DDL). This DDL is populated with a set of numbers starting
> at 1 and stopping at the length of the itemrenderer's datagrid
> dataprovider's length (i.e. 1 thru 20). I then have the DDL'S
> selectedIndex set to the row number in which the DDL appears. So,
> looking at the datagrid, first row is set to 1, second row to 2, etc.,
> etc. The DDL is being populated correctly as well as its
> selectedIndexes. This is all being handled in the prepare function of
> the itemrenderer.
> 
> The issue comes in when I go to change the DDL's value, if I scroll the
> datagrid, or mouse back over the DDL, the value of the DDL reverts back
> to the original value. I am pretty sure this has something to do with my
> code and the fact that it's been handled in the prepare function as well
> the itemrenderers being recycled(?). I am just not sure how to resolve
> it.
> 
> I have included the prepare function code below:
> 
>              override public function
> prepare(hasBeenRecycled:Boolean):void {
> 
> 
>                  if(data != null) {
> 
>                      // grab datagrid reference;
>                      dg = DataGrid(owner);
> 
> 
>                      // since prepare() is called several times only
> populate list_ac
>                      // to length of dg dataprovider.length;
>                      if( list_ac.length != dg.dataProvider.length){
> 
>                          for(var i:int=0;i< dg.dataProvider.length;i++) {
> 
>                              list_ac.addItem(i+1);
>                          }
> 
>                      }
> 
>                      // set selected index of dropdownlist(ddl) for
> 'this' itemrenderer
>                      // to match location in row of datagrid(dg);
>                      for(var j:int = 0;j<dg.dataProvider.length;j++){
> 
>                          if(data.question_id == 
> dg.dataProvider.getItemAt(j).question_id){
> 
>                              ddl.selectedIndex = j;
>                              break;
> 
>                          }
> 
>                      }
> 
>                  }
>              }
> 
> Please let me know if anything is unclear as I tried to make it as
> straightforward as possible. Thanks, in advance.
>


Reply via email to