Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Flash y Actionscript (http://www.forosdelweb.com/f16/)
-   -   Cargar valores a CheckBox con un XML remoto (http://www.forosdelweb.com/f16/cargar-valores-checkbox-con-xml-remoto-583205/)

Sergestux 05/05/2008 15:25

Cargar valores a CheckBox con un XML remoto
 
Hola colegas del foro, veran estoy intentado cargar de un archivo XML externo que tiene la estructura siguiente:
Código PHP:

<Conceptos>    
    <
Concepto id="1" descripcion="Primer Concepto" Lun='true' Mar='true' Mier='true' Jue='false' Vie='true' Sab='true' Dom='false'/>
    <
Concepto id="2" descripcion="Segundo Concepto" Lun='false' Mar='false' Mier='true' Jue='false' Vie='true' Sab='false' Dom='false'/>
    <
Concepto id="3" descripcion="Tercer Concepto" Lun='true' Mar='false' Mier='true' Jue='true' Vie='false' Sab='true' Dom='false'/>
</
Conceptos

Donde me he quedado sin poder resolverlo es en la parte de asignarle los valores almacenados en el Xml externo a los checkbox
Código PHP:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="ConceptoXml.send();">
<mx:HTTPService id="ConceptoXml" url="http://localhost/Conceptos.xml" resultFormat="e4x" showBusyCursor="true"/>
<mx:Script>
    <![CDATA[
        import mx.controls.CheckBox;                 
    ]]>
</mx:Script>
    <mx:VBox width="100%" 
           height="100%">
        <mx:DataGrid width="380" height="210" dataProvider="{ConceptoXml.lastResult.Concepto}">
            <mx:columns>
                <mx:DataGridColumn headerText="Concepto" dataField="@descripcion" width="120"/>
                <mx:DataGridColumn headerText="L" dataField="@Lun" editorDataField="@Lun" 
                    rendererIsEditor="true"    itemRenderer="mx.controls.CheckBox"/>
                <mx:DataGridColumn headerText="M" dataField="@Mar" itemRenderer="mx.controls.CheckBox"/>
                <mx:DataGridColumn headerText="M" dataField="@Mier" itemRenderer="mx.controls.CheckBox"/>
                <mx:DataGridColumn headerText="J" dataField="@Jue" itemRenderer="mx.controls.CheckBox"/>
                <mx:DataGridColumn headerText="V" dataField="@Vie" itemRenderer="mx.controls.CheckBox"/>
                <mx:DataGridColumn headerText="S" dataField="@Sab" itemRenderer="mx.controls.CheckBox"/>
                <mx:DataGridColumn headerText="D" dataField="@Dom" itemRenderer="mx.controls.CheckBox"/>
            </mx:columns>
        </mx:DataGrid>
    </mx:VBox>
</mx:Application>

Alguien que pueda ayudarme, le estaría muy agradecido.

P.D.T. El Xml podria modificarlo a otra estructura de ser necesario

Sergestux 06/05/2008 11:37

Re: Cargar valores a CheckBox con un XML remoto
 
Hola veran pude resolver esto de una manera que no muy me gusto, pero funciona.
Aca va el codigo unicamente para los dos primeros dias Lunes (L) y Martes(M)

Código:

                <mx:DataGridColumn headerText="L" dataField="@Lun" rendererIsEditor="true">
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:CheckBox creationComplete="init()">
                    <mx:Script>
                        <![CDATA[                   
                            private var _data:Object;
                            private function init():void
                            {
                                this.addEventListener(MouseEvent.CLICK, update);
                            }
                            [Bindable]
                            override public function get data():Object
                            {
                                return _data;
                            }
                           
                            override public function set data(o:Object):void
                            {
                                _data = o;
                                if(o.@Lun == "true")
                                    this.selected = true;
                                else
                                    this.selected = false;
                                       
                            }
                            private function update(event:MouseEvent):void
                            {
                                if(this.selected)
                                _data.checked = "true";
                                else
                                    _data.checked = "false";       
                            }                                                   
                        ]]>                   
                    </mx:Script>
                    </mx:CheckBox>
                    </mx:Component>
                </mx:itemRenderer>
                </mx:DataGridColumn>               
                               
                <mx:DataGridColumn headerText="M" dataField="@Mar" rendererIsEditor="true">
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:CheckBox creationComplete="init()">
                    <mx:Script>
                        <![CDATA[                   
                            private var _data:Object;
                            private function init():void
                            {
                                this.addEventListener(MouseEvent.CLICK, update);
                            }
                            [Bindable]
                            override public function get data():Object
                            {
                                return _data;
                            }
                           
                            override public function set data(o:Object):void
                            {
                                _data = o;
                                if(o.@Mar == "true")
                                    this.selected = true;
                                else
                                    this.selected = false;
                                       
                            }
                            private function update(event:MouseEvent):void
                            {
                                if(this.selected)
                                _data.checked = "true";
                                else
                                    _data.checked = "false";       
                            }                                                   
                        ]]>                   
                    </mx:Script>
                    </mx:CheckBox>
                    </mx:Component>
                </mx:itemRenderer>
                </mx:DataGridColumn>

Si alguien sabe alguna manera mucho mas optima, por favor que sea tan amable de indicarla

Sergestux 06/05/2008 12:37

Re: Cargar valores a CheckBox con un XML remoto
 
Bueno al final lo he dejado asi para cada dia:
Código PHP:

                <mx:DataGridColumn headerText="L" dataField="@Lun">
                    <
mx:itemRenderer>
                    <
mx:Component>
                        <
mx:CheckBox>
                            <
mx:Script>
                            <![
CDATA[                    
                                
override public function set data(o:Object):void
                                
{
                                    
this.selected Boolean(int(o.@Lun));    //Lo convierto a entero, despues a boleano
                                
}
                            ]]>                    
                            </
mx:Script>
                        </
mx:CheckBox>
                    </
mx:Component>
                </
mx:itemRenderer>
            </
mx:DataGridColumn

Obviamente modifique el xml para que guardara valores de 0 y 1, en vez de falso y verdadero
Código PHP:

<Conceptos>
<
Concepto id="1" descripcion="Primer Concepto" Lun="0" Mar="0" Mier="1" Jue="0" Vie="1" Sab="0" Dom="0"/>
<
Concepto id="2" descripcion="Segundo Concepto" Lun="0" Mar="1" Mier="1" Jue="0" Vie="1" Sab="0" Dom="0"/>
<
Concepto id="3" descripcion="Tercer Concepto" Lun="1" Mar="0" Mier="1" Jue="1" Vie="0" Sab="1" Dom="0"/>
</
Conceptos



La zona horaria es GMT -6. Ahora son las 02:51.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.