Отбори

Отбор Accounting Portal

Отбор Accounting Portal

by Димитър Димитров -
Number of replies: 7
:) Здравейте,

Та аз съм си отбора за Accounting Portal.
Димитър Димитров - 30997 4-ти курс.
Питах Калин и той ме одобри.


In reply to Димитър Димитров

Re: Отбор Accounting Portal

by Димитър Димитров -
Здравейте,

Имам един малък проблем...
следния код който динамично зарейда data.xml в dataGrid ми дава грешка:

<mx:Application name="DataGrid_XML_test"
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
creationComplete="dataRequest.send()">

<mx:HTTPService id="dataRequest" url="data.xml" result="dataRequestResultHandler(event);"
fault="dataRequestFaultHandler(event);" />
<mx:Script>
<![CDATA[

import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;

[Bindable]
private var stats:ArrayCollection;

private function dataRequestResultHandler(event:ResultEvent):void {
stats = event.result.data.row;
}
private function dataRequestFaultHandler(event:FaultEvent):void {
Alert.show(event.fault.message);
}

]]>
</mx:Script>

<mx:DataGrid dataProvider="{stats}" />

</mx:Application>


Грешка:
TypeError: Error #1010: A term is undefined and has no properties.
at XMLTestLoader/dataRequestResultHandler()[D:\Program Files\Adobe\projects\src\XMLTestLoader.mxml:23]
at XMLTestLoader/__dataRequest_result()[D:\Program Files\Adobe\projects\src\XMLTestLoader.mxml:9]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.rpc.http.mxml::HTTPService/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\http\mxml\HTTPService.as:290]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193]
at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43]
at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
at DirectHTTPMessageResponder/completeHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:403]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete();


In reply to Димитър Димитров

Re: Отбор Accounting Portal

by Юрий Донев -
Здравей,

Без конкретния data.xml може да не уцеля точния проблем, така че ако се наложи може да цитираш част от него.

Иначе, това което най-вероятно се получава, съдейки по грешката, е, че не може да се разреши правилно пътя зададен от event.result.data.row. Причината за това е, че резултатът от извикването на HTTPService обекта използва подразбиращия формат на резултата - object. Така event.result връща обект от тип ObjectProxy, който представлява целия резултатен ХМЛ. Една от основните разлики с това да е от тип XML е, че event.result не сочи към кореновия таг на хмл-а, т.е. ако data.xml има структурата <test><data><row></row><row></row></data></test>, за да се достигне до row трябва да се мине и през тага test, т.е. event.result.test.data.row, докато ако на HTTPService обекта беше зададен resultFormat='e4x' event.result щеше да е ХМЛ обект и достъпът щеше да бъде event.result.data.row

Освен това ще има и малка разлика при задаването за стойност на stats. Ако запазиш stats да е ArrayCollection може да получиш грешка, че не може да се конвертира обект от тип ObjectProxy към ArrayCollection. За това можеш да направиш следното stats = new ArrayCollection(ArrayUtils.toArray(event.result...data.row))

Другата възможност е направо да работиш с XML, т.е. да зададеш resultFormat='e4x' за HTTPService-a и stats да ти е от тип XMLList.
In reply to Юрий Донев

Re: Отбор Accounting Portal

by Димитър Димитров -
ето xml-a:

<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<col1>some value</col1>
<col2>another value</col2>
</row>
<row>
<col1>some value</col1>
<col2>another value</col2>
</row>
<row>
<col1>some value</col1>
<col2>another value</col2>
</row>
</rows>
In reply to Димитър Димитров

Re: Отбор Accounting Portal

by Юрий Донев -
Ясно, в такъв случай въобще трябва да премахнеш data частта от израза, с който достъпваш колекцията от row обекти. Пробвай или с stats = new ArrayCollection(ArrayUtils.toArray(event.result.rows.row)), ако работиш с ArrayCollection или stats = event.result.row за XMLList и би трябвало да стане. Ако не - напиши грешката, която ти дава или довечера на лекцията ме намери да се разберем по-лесно.
In reply to Юрий Донев

Re: Отбор Accounting Portal

by Димитър Димитров -
Имам още едно питане...

искам да взема текущия месец и година, използвам ей тая фукция...

private function loadDate():void{
var current_date:Date = new Date();
month = current_date.getMonth();
year = current_date.getFullYear()
trace(month);
trace(year);
}
и trace нищо не показва....
In reply to Димитър Димитров

Re: Отбор Accounting Portal

by Юрий Донев -
Здравей,

При мен този код си изкарва в конзолата точната информация (само индексирането на месеците почва от 0 и затова е объркваща стойността на месеца). Сигурен ли си, че дебъгерът ти работи правилно, можеш да пробваш да сложиш breakpoint някъде преди взимането на информацията. Или пък да използваш алърти с mx.controls.Alert.show(month). Ако и това не стане ми прати кода, в случай, че няма да защитаваш днес. Иначе, може на място да го погледнем.
In reply to Юрий Донев

Re: Отбор Accounting Portal

by Димитър Димитров -
Здравейте,
Аз си защитих проекта но имам едно въпросче...
Имам един xml който служи за dataProvider на datagrid но когато състави таблицата от xml-a не подрежда колоните както са били дефинирани в xml-a.
Например:
xml:
<rows>
<row>
<sitename>test</sitename>
<jan_2009>12</jan_2009>
<total>12</total>
</row>
</rows>
след като вземе данните ги подрежда по колони така:
jan_2009, sitename, total

Как мога да му кажа да ги подрежда в реда в който са написани в xml-a