Заполнение сетки данных в flex содержимым из XML-канала - PullRequest
0 голосов
/ 10 сентября 2010

У меня есть сетка данных:

    <mx:DataGrid id="resultsDataGrid" 
                 height="328" width="604" paddingRight="0" editable="false" y="43" horizontalCenter="0">
        <mx:columns>
            <mx:DataGridColumn headerText="Title" dataField="title"/>
            <mx:DataGridColumn headerText="Updated" dataField="updated"/>
        </mx:columns>
    </mx:DataGrid>

У меня также есть служба REST, возвращающая файл xml в следующем формате:

<feed xmlns="http://www.w3.org/2005/Atom">
<title></title>
<link href=""/>
<link rel="" href=""/>
<updated></updated>
<author>
    <name></name>
</author>
<id></id>
<entry>
<title></title>
<link href=""/>
<id></id>
<updated></updated>
<published></published>
<summary></summary>
<author>
    <name></name>
</author>
<category term="" label=""/>
<category term="" scheme=""/>
</entry>
</feed>

Теперь все эти поля заполняются, когдаон вернулся, но чтобы было проще увидеть, что я удалил значения.

У меня HTTPService пытается заполнить его следующей функцией результата:

        private function searched(event:ResultEvent):void
        {
            var result:XML = XML(event.result);
            //summaryText.text = result.toXMLString();
            //Alert.show(result.children().children().children().toString() + "hey");
            resultsDataGrid.dataProvider = result.entry;
        }

Мне нужен толькоПоля Title и Обновлено для фактической загрузки в DataGrid.Это явно не работает, поэтому я пришел с просьбой о помощи, если у кого-то есть опыт и он может сказать мне, как правильно его организовать, я был бы признателен.(Я думаю, что это связано с result.entry, что это должно быть что-то похожее на result.feed.entry, но я пробовал несколько комбинаций, и они не сработали - если я просто не выбрал правильную.)

1 Ответ

2 голосов
/ 10 сентября 2010

Пространство имен, как ни странно, является причиной вашей проблемы.Префиксы автоматически генерируются для пространств имен, которые их не включают.

Самое простое решение: не использовать пространство имен.

В противном случае: вам нужно провести некоторое исследование здесь: http://livedocs.adobe.com/flex/3/langref/Namespace.html

В следующем примере кода попробуйте нажимать кнопки, и вы увидите, что происходит:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:XML id="atomNamespace">
        <feed xmlns="http://www.w3.org/2005/Atom">
            <title></title>
            <link href="" />
            <link rel="" href="" />
            <updated></updated>
            <author>
                <name></name>
            </author>
            <id></id>
            <entry>
                <title>Title text</title>
                <link href="" />
                <id></id>
                <updated>2010-09-10</updated>
                <published></published>
                <summary></summary>
                <author>
                    <name></name>
                </author>
                <category term="" label="" />
                <category term="" scheme="" />
            </entry>
        </feed>
    </mx:XML>
    <mx:XML id="noNamespace">
        <feed>
            <title></title>
            <link href="" />
            <link rel="" href="" />
            <updated></updated>
            <author>
                <name></name>
            </author>
            <id></id>
            <entry>
                <title>Title text</title>
                <link href="" />
                <id></id>
                <updated>2010-09-10</updated>
                <published></published>
                <summary></summary>
                <author>
                    <name></name>
                </author>
                <category term="" label="" />
                <category term="" scheme="" />
            </entry>
        </feed>
    </mx:XML>
    <mx:DataGrid id="resultList">
        <mx:columns>
            <mx:DataGridColumn headerText="Title" dataField="title" />
            <mx:DataGridColumn headerText="Updated" dataField="updated" />
        </mx:columns>
    </mx:DataGrid>
    <mx:Button label="Atom Namespace" click="resultList.dataProvider = atomNamespace..entry"/>
    <mx:Button label="No Namespace" click="resultList.dataProvider = noNamespace..entry"/>
</mx:Application>
...