[flexcoders] Re: Custom Itemrenderer - maintaining changed value in dropdownlist

2011-10-27 Thread valdhor
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;jdg.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.





[flexcoders] Re: Custom Itemrenderer - maintaining changed value in dropdownlist

2011-10-27 Thread sdl1326
Thanks for the assistance.

--- In flexcoders@yahoogroups.com, valdhor valdhorlists@... wrote:

 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;jdg.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.