Доступ к узлам XML в itemRenderer - PullRequest
0 голосов
/ 10 марта 2010
[Bindable]public var headingData1:Object = new Object();

<mx:HTTPService id="srv" url="components.xml" resultFormat="object" result="getHeadings(event);"/>

private function getHeadings(evt:ResultEvent):void{
             //Alert.show(xmlData.toString());
             xmlData = evt.result;
             headingData1 = xmlData.root.CIT;
    }


 <CIT id="1" name="CIT" projectname="CSI" projectmonth="March" manager="KingKong" description="Hello Kong">
    <component number="1" title="Title One">
                <link linkname="Excellent" value="5"/>
                <link linkname="Very Good" value = "4"/>
                <link linkname="Good" value = "3"/>
                <link linkname="Fair" value = "2"/>
                <link linkname="Poor" value = "1"/>
    </component>
</CIT>

Поле со списком как itemRenderer в Flex Advanced Datagrid

<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox dataProvider="{data.link}" 
    xmlns:mx="http://www.adobe.com/2006/mxml" labelField="@linkname" change="stuffChanged()">

<mx:Script>
        <![CDATA[
        //skillsDropdownItems
            import mx.controls.dataGridClasses.DataGridListData;
            import flash.events.Event;
            import mx.controls.Alert;
            import mx.core.Application;
            import mx.collections.ArrayCollection;

            override public function set data( value:Object ) : void {
                super.data = value;
                //this.selectedIndex=data;
                //this.selectedIndex=data.link;
            }

            public function handleDataChanged(event:Event):void {       
                // Cast listData to DataGridListData. 
                //var myListData:DataGridListData = DataGridListData(listData);
                //var r:int=myListData.rowIndex;
                //var c:int=myListData.columnIndex;

                // Access information about the data passed 
                // to the cell renderer.
                //this.parentApplication.whateverStuff[c][r]=this.value;
            }   
            public function stuffChanged():void{
            //var myListData:DataGridListData = DataGridListData(listData);
            //var r:int=myListData.rowIndex;
            //var c:int=myListData.columnIndex;
            //Application.application.whateverStuff[r+1][c]=this.value;
           // Alert.show(this.selectedItem.data);
            for(var k in this.selectedItem) 
            Alert.show(k + " : " + this.selectedItem[k]);
            }   
        ]]>
    </mx:Script>
<!--</mx:NumericStepper>-->
</mx:ComboBox>

Мне нужно получить значения ссылок в моем комбинированном списке.

Мой Расширенный DataGrid

<mx:AdvancedDataGrid dataProvider="{headingData1.component}" horizontalScrollPolicy="on" verticalScrollPolicy="on" x="10" y="132" width="100%" height="303" id="adg1" designViewDataType="tree">
        <mx:columns>
            <mx:AdvancedDataGridColumn headerText="Sr No" dataField="number"/>
            <mx:AdvancedDataGridColumn headerText="Parameter" dataField="title"/>
            <mx:AdvancedDataGridColumn headerText="Feedback" width="170" itemRenderer="com.myClasses.myGridDropdownRenderer"/>
            <mx:AdvancedDataGridColumn headerText="Remarks/Comments/Improvement areas" itemRenderer="mx.controls.TextInput" dataField="col3"/>
        </mx:columns>
    </mx:AdvancedDataGrid> 

Ответы [ 2 ]

1 голос
/ 10 марта 2010

Замечание: зачем создавать экземпляр headingData1 как объект? вы передаёте ему XML, поэтому он должен быть напечатан как XML.

Это может быть вашей единственной актуальной проблемой: headingData1 = xmlData.root.CIT может потребоваться headingData1 = xmlData.root.CIT[0] (мне приходится часто это делать при работе с XML, это связано с тем, как работает E4X, и, похоже, использует XMLList, даже когда на этом уровне есть только один узел. другие объяснения, но это имеет смысл для меня.)

1 голос
/ 10 марта 2010
<mx:ComboBox dataProvider="{data.link}" 
    xmlns:mx="http://www.adobe.com/2006/mxml" labelField="@linkname">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...