0

我有这个 XML (Flash/AS3):

 <channel>
 <title>...</title>
 <description>...</description>
 <item><summary>...</summary><detail>...</detail></item>
 <item><summary>...</summary><detail>...</detail></item>
 ...
 </channel>

我想创建一个包含元素的 DataProvider(用于数据网格)。

我认为这会起作用:

var items:XML = new XML(evt.target.data); //url loader event listener 'complete'
trace(items..item is XMLList); // true
myDP = new DataProvider(items..item);

但我得到这个错误:

 TypeError: Error: Type Coercion failed: cannot convert 
   <item><summary>...</summary><detail>...</detail></item>
   <item><summary>...</summary><detail>...</detail></item>
     ...
 to Array or DataProvider.
    at fl.data::DataProvider/getDataFromObject()
    at fl.data::DataProvider()

我究竟做错了什么?

4

2 回答 2

0

您不需要创建 DataProvider 的实例。您应该能够直接将 dataProvider 属性分配给 XML 实例。dataProvider 设置器将自动确定对象类型并适当地处理它。

于 2010-09-30T22:33:14.317 回答
0

您必须给 DataProvider 一个 XML,而不是 XMLList:

var items:XML = <channel>
   <title>Title</title>
   <description>Description</description>
   <item><summary>Summary 1</summary><detail>Detail 1</detail></item>
   <item><summary>Summary 2</summary><detail>Detail 2</detail></item>
</channel>;

var xml:XML = <dummy/>;
xml.appendChild(items..item);
list.dataProvider = new DataProvider(xml);
list.labelFunction = function(item:Object) {
   return item.summary;
}
于 2010-10-01T00:14:16.443 回答