【问题标题】:Data filtering for XML. FlexXML 的数据过滤。柔性
【发布时间】:2014-02-16 22:08:26
【问题描述】:

我正在尝试过滤 xml 数据,但现在我没有数据出现在列表中。我做错了什么吗?对不起,伙计们,我也是这个网站的新手。请原谅我,如果我张贴错误的方式。

这是错误。

TypeError:错误 #1034:类型强制失败:无法将 mx.collections::ArrayCollection@51443c1 转换为 XMLList。

    xmlns:s="library://ns.adobe.com/flex/spark" title="Malls"

    creationComplete="malls.send()">

<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
    <s:HTTPService id="malls" url="assets/details.xml" 
                   result="malls_resultHandler(event)"/>
</fx:Declarations>

<fx:Script>
    <![CDATA[
        import mx.collections.XMLListCollection;
        import mx.rpc.events.ResultEvent;
        [Bindable]
        private var ml:XMLListCollection;

        private function malls_resultHandler(Event:ResultEvent):void
        {
            ml = new XMLListCollection(malls.lastResult.list.mallD);

        }

        private function filterDemo():void{
            ml.filterFunction=searchDemo;
            ml.refresh();
        }

        private function searchDemo(item:Object):Boolean{
            var isMatch:Boolean=false;
            if(item.name.toLowerCase().search(search.text.toLowerCase())!=-1){
                isMatch=true;
            }
            return isMatch;
        }


    ]]>
</fx:Script>


<s:navigationContent/>
<s:titleContent>
    <s:TextInput id="search" change="filterDemo()" x="10" y="10" prompt="Search"/>
</s:titleContent>

<s:List id="list" top="0" bottom="0" left="0" right="0"
        dataProvider="{ml}"
        change="navigator.pushView(MallsDetails, list.selectedItem)">
    <s:itemRenderer>
        <fx:Component>
            <s:IconItemRenderer
                label="{data.name}"/>
        </fx:Component>
    </s:itemRenderer>
</s:List>

【问题讨论】:

  • 也显示您的 XML 结构
  • 1Ion Orchard
    2 Orchard Turn
    Singapore 238801+65 6238 8228customercare@ionorchard.com.sgIon.png
  • 1.哦..在您的问题中实际发布您的 XML 会很好。 2. 如果你已经有 XML 为什么不使用 XML 的东西而不是数组集合。请更新您的帖子以获得更好的知名度。

标签: xml apache-flex flash-builder flex4.5 flexbuilder


【解决方案1】:

试试这个,

这里不需要提及XML根标签名,所以在访问XML时去掉list标签名即可。

resultFormat="e4x" 添加到 HTTPService 组件。

<s:HTTPService id="malls" url="assets/details.xml" resultFormat="e4x"
                   result="malls_resultHandler(event)"/>


ml = new XMLListCollection(malls.lastResult.mallD);

var response:XML = malls.lastResult as XML;

var mallIDXMLList:XMLList = response.mallD;             
m1 = new XMLListCollection(mallIDXMLList);

【讨论】:

  • 谢谢!但是,列表中似乎没有任何数据。
  • 答案已更新,请查看。还要确保你的 malls.lastResult 以及定义良好的 XML 我假设你的 xml 像这样 .........
  • 是的,实际上一切都很完美。为什么现在找不到m1?描述资源路径位置类型 1120:未定义属性 m1 的访问。 Malls.mxml /SGshopping/src/views 第 26 行 Flex 问题
  • 我很抱歉它应该毫升。我写错了。我尝试重新输入 dataProvider 但现在我遇到了这个问题。 TypeError:错误 #1009:无法访问空对象引用的属性或方法。
  • 那个错误到底发生在哪里。你能指出行吗?
【解决方案2】:

你可以尝试替换

ml = new XMLListCollection(malls.lastResult.list.mallD);

var xmllist:XMLList = XMLList (malls.lastResult.list.mallD);
ml = new XMLListCollection(xmllist);

【讨论】:

  • 感谢您的帮助。但是,xml数据的结构在那里,但数据没有显示出来。
  • 谢谢!但是,列表中似乎没有任何数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多