سؤال

لدي httpservice التي ترجع بيانات XML.

<mx:HTTPService id="httpService" url="data/Software.xml" resultFormat="e4x" result="httpResult_handler(event)" fault="Alert.show('XML Data Error')" />

لدي أيضا DataGrid باستخدام البيانات التي تم إرجاعها وأيضا نقلها إلى العارض الذي يعمل بشكل مثالي.

<mx:DataGrid id="myDG" 
dataProvider="{httpService.lastResult.item}"
headerHeight="0"
editable="false"
width="100%" height="100%" 
rowHeight="50"
itemClick="switchView(myDG.selectedItem.name);">

<mx:columns>
<mx:DataGridColumn itemRenderer="com.xd.components.renderers.SoftwareListRenderer" />
</mx:columns>

</mx:DataGrid>

لكل نتيجة في بيانات XML لدي بعض الرمز الذي يخلق جديد panel() والعرض.

private function viewstack_addChild(name:String):void {
            var p:Panel = new Panel();
            p.id = name;
            p.name = name;
            p.title = name;
            p.percentWidth = 100;
            p.percentHeight = 100;
            var randColor:uint = Math.random() * 0xFFFFFF;
            p.setStyle("backgroundColor", randColor);
            var pR:PageListRenderer = new PageListRenderer();
            var data:Object;
            //Do something to get the data to be displayed;
            pR.data = PageListRenderer;
            p.addChild(pR);
            myViewStack.addChild(p);
        }

ومع ذلك أنا غير قادر على استخدام نفسه {data.name} في هذا العارض كما أقوم به في العارض DataGrid. بدلا من ذلك، أحصل على "undefined" لكل حقل ... كيف سأذهب في اجتياز {httpService.lastResult.item} إلى مصطلح الصفحة أيضا؟

تحرير: التغييرات المقدمة ..

هذا هو معالج النتيجة HTTSService.

        private function httpResult_handler(evt:ResultEvent):void {
            if (evt.result.software.item) {

                 data = XML(evt.result).descendants("item");
                    var item:Object = data;
                    for each(item in data) {
                        viewstack_addChild(item.name);
                    }
            }
         }

لقد حاولت أيضا ..

        private function httpResult_handler(evt:ResultEvent):void {
            if (evt.result.software.item) {

                 data = httpService.lastResult.item;
                     var item:Object = data;
                     for each(item in data) {
                        viewstack_addChild(item.name);
                    }
            }
         }

أنا أيضا تغيير pR.data = data في ال viewstack_addChild وظيفة. أحصل على المعلومات الموجودة في DataGrid، وأحصل على البيانات الموجودة في كل صفحة مقدمة ومع ذلك، فإن كل صفحة لها نفس المعلومات (النتيجة الأولى) بدلا من كل نتيجة لكل صفحة ...

هل كانت مفيدة؟

المحلول

أوصي بعدم جعل DataProvider يجري البيانات التي تم إرجاعها من خدمة HTTP بدلا من ربط متغير يتم استخدامه لتخزين هذه البيانات. ثم يتم تهيئة أي طقس مكون UI أو لا يمكن استخدامه.

[Bindable]
var httpDataService:Object;

function getData():void 
{
   hpptDataService = httpService.lastResult.item;

. }

شبكة بيانات...

dataprovider = "{httpDataService}"

مكونات UI الأخرى

Dataprovider = httpdataservice.

أو في حالتك

 data = httpDataService

تذكر المرن يحتوي على Cotrols كهيئة كسول حتى إذا لم يتم تهيئة عنصر تحكم الآخر عند النقطة التي تقوم فيها بإجراء طلب HTTP الخاص بك فسيحظى بالحظ. فيما يلي من مرجع المكدس عرض ولكن ينطبق كثيرا على أي عنصر تحكم غير مرئي للمستخدم حتى يتم تحديد ...

ملاحظة: سياسة الإنشاء الافتراضية لجميع الحاويات، باستثناء حاوية التطبيقات، هي سياسة الحاوية الأصلية. السياسة الافتراضية لحاوية التطبيق هي السيارات. في معظم الحالات، وبالتالي، لا يتم إنشاء أطفال عرض مراقبة المكدس حتى يتم اختيارهم. لا يمكنك تعيين الخاصية المحدد إلى طفل لم يتم إنشاؤه بعد.

نصائح أخرى

أعتقد أن المشكلة هي أن قمت بتعيين البيانات لتكون Pagelistreasterer، والتي تبدو مرتبكة كصف بدلا من البيانات التي تريدها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top