Сетка данных Flex / Flash 4 отображает сырой XML - PullRequest
0 голосов
/ 30 апреля 2010

Проблема: клиент Flex / Flash4 (встроенный в FlashBuilder4) отображает xml, отправленный с сервера, в том виде, в каком он есть - сетка данных сохраняет формат xml. Мне нужна сетка данных для анализа входных данных и размещения данных в правильных строках и столбцах сетки данных.

flow: нажмите на дату в дереве, и она отправит серверу запрос на получение информации о пакете в формате xml. Используя CallResponder, я затем обновляю dataProvider сетки данных.

[код]

<fx:Script>
    <![CDATA[
        import mx.controls.Alert;
        [Bindable]public var selectedTreeNode:XML;
        public function taskTreeChanged(event:Event):void {
            selectedTreeNode=Tree(event.target).selectedItem as XML;
            var searchHubId:String = selectedTreeNode.@hub;
            var searchDate:String = selectedTreeNode.@lbl;
            if((searchHubId == "") || (searchDate == "")){
                return;
            }
        findShipmentBatches(searchDate,searchHubId);
        }
        protected function findShipmentBatches(searchDate:String, searchHubId:String):void{
            findShipmentBatchesResult.token = actWs.findShipmentBatches(searchDate, searchHubId);
        }
        protected function updateBatchDataGridDP():void{
        task_list_dg.dataProvider = findShipmentBatchesResult.lastResult;
    }
]]>
</fx:Script>
<fx:Declarations>
    <actws:ActWs id="actWs" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
    <s:CallResponder id="findShipmentBatchesResult" result="updateBatchDataGridDP()"/>
</fx:Declarations> 

<mx:AdvancedDataGrid id="task_list_dg" width="100%" height="95%" paddingLeft="0" paddingTop="0" paddingBottom="0">
    <mx:columns>
        <mx:AdvancedDataGridColumn headerText="Receiving date" dataField="rd"/>
        <mx:AdvancedDataGridColumn headerText="Msg type" dataField="mt"/>
        <mx:AdvancedDataGridColumn headerText="SSD" dataField="ssd"/>
        <mx:AdvancedDataGridColumn headerText="Shipping site" dataField="sss"/>
        <mx:AdvancedDataGridColumn headerText="File name" dataField="fn"/>
        <mx:AdvancedDataGridColumn headerText="Batch number" dataField="bn"/>
    </mx:columns>
</mx:AdvancedDataGrid>

//xml example from server
<batches>
    <batch>
        <rd>2010-04-23 16:31:00.0</rd>
        <mt>SC1REVISION01</mt>
        <ssd>2010-02-18 00:00:00.0</ssd>
        <sss>100000009</sss>
        <fn>Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv</fn>
        <bn>10041</bn>
    </batch>
<batches>

[/ код]

и xml в значительной степени отображается точно так, как показано в примере выше в столбцах таблицы данных ...

Буду признателен за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 06 мая 2010

пришлось прибегнуть к этому чудовищу ----> есть ли лучший способ ???

        protected function updateBatchDataGridDP():void{
            var batches:XML = new XML(findShipmentBatchesResult.lastResult);
            task_list_dg.dataProvider = batches.batch;
            var task_list_col1:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col1.dataField = "@rd";
            task_list_col1.headerText = "Receiving date";
            var task_list_col2:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col2.dataField = "@mt";
            task_list_col2.headerText = "Msg type";
            var task_list_col3:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col3.dataField = "@ssd";
            task_list_col3.headerText = "SSD";
            var task_list_col4:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col4.dataField = "@sss";
            task_list_col4.headerText = "Shipping site";
            task_list_status.text = batches.batch.@sss;
            var task_list_col5:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col5.dataField = "@fn";
            task_list_col5.headerText = "File name";
            var task_list_col6:AdvancedDataGridColumn = new AdvancedDataGridColumn();
            task_list_col6.dataField = "@bn";
            task_list_col6.headerText = "Batch number";
            var myColumns:Array = new Array();
            myColumns.push(task_list_col1);
            myColumns.push(task_list_col2);
            myColumns.push(task_list_col3);
            myColumns.push(task_list_col4);
            myColumns.push(task_list_col5);
            myColumns.push(task_list_col6);
            task_list_dg.columns = myColumns;
        }

с этой структурой xml:

<batches>
    <batch rd="2010-04-23 16:31:00.0" mt="SC1REVISION01" ssd="2010-02-18 00:00:00.0" sss="Quanta" fn="Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv" bn="SHA201004230033" />
    <batch rd="2010-04-23 16:32:14.0" mt="SC1" ssd="2010-02-11 00:00:00.0" sss="Quanta" fn="DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100211.csv" bn="SHA201004230043" />
    <batch rd="2010-04-23 16:35:51.0" mt="PRESHIP" ssd="2010-02-15 00:00:00.0" sss="Quanta" fn="DF-Ocean-PRESHIPSUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100215.csv" bn="SHA201004230045" />
</batches>
0 голосов
/ 30 апреля 2010

Я попробовал упрощенную версию вашего примера, используя простой литерал xml, и он отлично работает для меня ..

вот что у меня есть

    <fx:Script>
    <![CDATA[
        import mx.events.FlexEvent;

        protected function onCreationCompleteHandler(event:FlexEvent):void
        {
            task_list_dg.dataProvider = data..batch;
        }

        private var data:XML = //xml example from server
            <batches>
            <batch>
                <rd>2010-04-23 16:31:00.0</rd>
                <mt>SC1REVISION01</mt>
                <ssd>2010-02-18 00:00:00.0</ssd>
                <sss>100000009</sss>
                <fn>Revision 1-DF-Ocean-SC1SUM-Quanta-PACT-EMEA-Scheduled Ship Date 20100218.csv</fn>
                <bn>10041</bn>
            </batch>
            </batches>;



    ]]>
</fx:Script>

<mx:AdvancedDataGrid id="task_list_dg" width="100%" height="95%" paddingLeft="0" paddingTop="0" paddingBottom="0">
    <mx:columns>
        <mx:AdvancedDataGridColumn headerText="Receiving date" dataField="rd"/>
        <mx:AdvancedDataGridColumn headerText="Msg type" dataField="mt"/>
        <mx:AdvancedDataGridColumn headerText="SSD" dataField="ssd"/>
        <mx:AdvancedDataGridColumn headerText="Shipping site" dataField="sss"/>
        <mx:AdvancedDataGridColumn headerText="File name" dataField="fn"/>
        <mx:AdvancedDataGridColumn headerText="Batch number" dataField="bn"/>
    </mx:columns>
</mx:AdvancedDataGrid>

Вы уверены, что ваши данные поступают в формате, который вы предлагаете? (проверьте вкладку «Данные / Услуги» в FB)

Что вы подразумеваете под "отображает xml, отправленный с сервера, в том виде, в каком он есть - сетка данных сохраняет формат xml"? выводит ли он содержимое XML в ячейки сетки?

Редактировать : Вы пытались это сделать?

protected function updateBatchDataGridDP():void{
    task_list_dg.dataProvider = findShipmentBatchesResult.lastResult..batch;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...