Bump

--- In flexcoders@yahoogroups.com, "Geoffrey" <[EMAIL PROTECTED]> wrote:
>
> I have a Repeater of CheckBoxes, which may or may not have a sublayer
> of CheckBoxes.  It should look something like:
>     [] archive 1
>     [] archive 2
>         [] dataSource 1
>         [] dataSource 2
>         [] dataSource 3
>     [] archive 3
> 
> By default all CheckBoxes are unselected, and any
> sublayer CheckBoxes are not enabled.  If you select a CheckBox(archive
> 2) that has sublayer CheckBoxes (dataSource 1- 3), they are enabled. 
> If you unselect a CheckBox that has sublayer CheckBoxes, they are
> disabled and unselected.
> 
> I'm using the Cairngorm framework, so the call results from the
> database are returned to my model.  This model is used as the
> dataProvider for the Repeater.
> 
> The issue is that I can not update my model and have the sublayer
> Repeater update properly.  For example, if there are three sublayer
> CheckBoxes (like above), selecting the parent CheckBox (archive 2)
> will enable only the first 2 sublayer CheckBoxes (dataSource 1 & 2). 
> Then deselecting the parent CheckBox will disable the first 2 sublayer
> CheckBoxes, but enable the third (dataSource 3).  From this point on
> the enabled property for dataSource 1&2 will be in a opposite state
> from dataSource 3.
> 
> Below are code snippets:
> ------------------------------------------------------------
> Library.mxml:
> <mx:Repeater id="archiveRepeater"
>      dataProvider="{__model.archiveElements}">
> 
>      <mx:CheckBox id="archive"
>           label="{archiveRepeater.currentItem.archiveName}"
>           click="__model.archiveChanged(event)"/>
> 
>      <mx:Repeater id="dataSourceRepeater"
>         dataProvider=
>             "{archiveRepeater.currentItem.archiveDataRepositories}">
> 
>           <mx:CheckBox id="dataSource"
>                label="{dataSourceRepeater.currentItem.repositoryName}"
>                enabled="{dataSourceRepeater.currentItem.enabled}"
>                selected="{dataSourceRepeater.currentItem.selected}"
>                click="__model.dataSourceChanged(event)">
> 
>           </mx:CheckBox>
>      </mx:Repeater>
> </mx:Repeater>
> ------------------------------------------------------------
> 
> ------------------------------------------------------------
> LibraryModel.as:
> public function archiveChanged( event:MouseEvent ):void 
> {
>     var selectionChoice:Boolean = event.target.selected;
>     var selectionName:String = event.target.label;
>     var al:ArchiveLocation =
>         ArchiveLocation(event.target.getRepeaterItem());
>     al.selected = selectionChoice;
>     
>     // Go through any data repositories
>     // and toggle their enabled property
>     if (al.archiveDataRepositories != null)
>     {
>         var adr:Array = al.archiveDataRepositories;
>         if (selectionChoice == false)
>         {
>             // Deselect and disable all CheckBoxes
>             for (var i:uint = 0; i < adr.length; i++)
>             {
>                 // Update the model
>                 adr[i].selected = false;
>                 adr[i].enabled = false;
>             }
>             else
>             {
>                 // Enable all CheckBoxes
>                 for (i = 0; i < adr.length; i++) 
>                 {
>                     adr[i].enabled = true;
>                 }
>             }
>         }
>     }
> }
> ------------------------------------------------------------
> 
> As you can tell, there are ValueObjects that store the enabled and
> selected attributes for the dataSource CheckBoxes.
> 
> What's even weirder, is that the ValueObjects that make up the
> dataProvider for the Repeater are updated correctly (their selected
> and enabled properties), but the last CheckBox of any sublayer remains
> in a state that is opposite of the other grouped sublayer CheckBoxes.
> 
> I've gotten around this by directly updating the display by using:
>      event.target.document.dataSource[i][j].enabled = false;
> But I don't want to rely on this as it will cause issues later on.
> 
> I feel that I should be able to update the dataProvider for the
> various Repeaters and this should update the display properly.  Any
> suggestions would be greatly appreciated.
> 
>   ~Geoff~
>


Reply via email to