zoukankan      html  css  js  c++  java
  • Flex XML搜索、匹配

    -

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
     3                xmlns:s="library://ns.adobe.com/flex/spark" 
     4                xmlns:mx="library://ns.adobe.com/flex/mx" 
     5                minWidth="955" minHeight="600"
     6                creationComplete="init()">
     7     
     8     <fx:Script>
     9         <![CDATA[
    10             import mx.events.FlexEvent;
    11             import mx.utils.StringUtil;
    12             
    13             import spark.events.TextOperationEvent;            
    14             
    15             public var listshow:XML=
    16                 <apps name="计算机课程">
    17                 <item name="算法与数据结构"/>
    18                 <item name="分布式计算"/>
    19                 <item name="计算机网络"/>
    20                 <item name="分布式系统"/>
    21                 </apps>;
    22             [Bindable]
    23             public var listnew:XML=null; //搜索过滤后的数据
    24             
    25             public function  init():void
    26             {
    27                 getData();
    28             }
    29             protected function textinput_change(event:TextOperationEvent):void
    30             {
    31                  getData();
    32             }
    33             protected function getData():void
    34             {
    35                 //删除字符串的开头末尾的空格
    36                 if(StringUtil.trim(textinput.text)=="")
    37                 {
    38                     listnew=listshow;
    39                 }else{
    40                     createNewXML(textinput.text,listshow);
    41                 }
    42                 //打开或关闭指定项目下的所有树项目。如果设置 dataProvider 之后立即调用 expandChildrenOf()
    43                 //则您可能看不到正确的行为。您应该等待对组件进行验证或调用 validateNow()方法 
    44                 tree.validateNow();
    45                 expandtree();
    46             }
    47             //搜索过滤产生新的XML
    48             private function createNewXML(str:String,xml:XML):void
    49             {
    50                 listnew=<apps name="计算机课程" />;
    51                 for(var i:int=0;i<xml.children().length();i++)
    52                 {
    53                     var itemxml:XML=xml.child("item")[i];
    54                     if(isInStr(str,itemxml.@name.toString()))
    55                         listnew.appendChild(itemxml);                
    56                 }
    57             }
    58             //判断search_str是否在str中
    59             public function isInStr(search_str:String,str:String):Boolean
    60             {
    61                 var num:int=str.indexOf(search_str);
    62                 if(num>-1)
    63                 {
    64                     return true;
    65                 }else return false;
    66             }
    67             protected function expandtree():void
    68             {
    69                 for each(var itemxml in this.tree.dataProvider)
    70                 this.tree.expandChildrenOf(itemxml,true);
    71             }
    72         ]]>
    73     </fx:Script>
    74     <s:Panel width="767" height="361" title="演示实例">
    75     <s:TextInput id="textinput" x="10" y="10" width="174" height="32"
    76                  change="textinput_change(event)" prompt="请输入要搜索的关键词"/>    
    77     <mx:Tree id="tree" x="10" y="50" width="174" height="208" dataProvider="{listnew}"
    78              labelField="@name"/>
    79     <s:Label x="14" y="263" height="28" text="更多例子 请关注:www.baidu.com"/>
    80     </s:Panel>
    81 </s:Application>

    效果图:

    搜索结果:

     参考文献:http://www.oschina.net/code/snippet_853151_21508

  • 相关阅读:
    面试经验
    二叉树和递归
    优先队列
    队列问题
    书法学习资料
    栈的问题
    Git常用命令
    字母大小写转换
    深入类中的方法[8] - 抽象方法与抽象类
    深入类中的方法[7] - 关于 inherited
  • 原文地址:https://www.cnblogs.com/sunrunzhi/p/3446000.html
Copyright © 2011-2022 走看看