Posts Tagged ‘搜索结果’

flex中用树来显示搜索结果

星期三, 12月 24th, 2008

具体的要求是,我有一个大的树用来显示股票的名称和代码,然而股票实在是太多了,我又需要增加一个输入框,用户输入股票代码的时候,检索出匹配的项目,显示在树的上方。

mxml:

<mx:TextInput x=”5″ y=”10″ width=”160″ height=”25″ fontSize=”12″ id=”searchbox”
text=”输入:股票代码/股票名称”
click=”if (searchbox.text.length > 10) searchbox.text=”;”
focusOut=”if (searchbox.text.length == 0) searchbox.text=’输入:股票代码/股票名称’”
change=”searchstock();”    />

<mx:Tree x=”5″ y=”40″ width=”274″ height=”100%” id=”tree_1″
dataProvider=”{categoryData}” labelFunction=”treeLabel” iconFunction=”treeIcon1″
itemClick=”tree1_itemClick(event)” fontSize=”12″></mx:Tree>

ActionScript:

private function searchstock():void {
                var resultCount:Number = 10;
                var kw:String = searchbox.text;
                var dept:XMLList = category.sortmethod.(@code == "400");                
                //根据具体的xml格式获取树中显示搜索结果的节点。
                var i:Number;
                var j:Number;
                var c:Number;

                while (dept[0].item.length() > 0) {    //清空上次的搜索结果
                    delete dept[0].item[0];
                }
               
                if (kw.length < 2) return;

                for (i = 0, c = 0; i < alphaxml.klist.length(); i++) { //根据具体情况遍历股票列表
                    for (j = 0; j < alphaxml.klist[i].item.length(); j++) {
                        if (alphaxml.klist[i].item[j].@name.indexOf(kw) >= 0 && c < resultCount) {
                            dept[0].appendChild(alphaxml.klist[i].item[j]); //匹配的条目加入搜索结果
                            c++;
                        }
                        if (c >= resultCount) break;
                    }
                    if (c >= resultCount) break;
                }

                tree_1.expandChildrenOf(tree_1.firstVisibleItem, true); //展开搜索结果
            }

主要是:
1.清空树的某节点下的所有内容,因为在文档里面查不到,最后翻翻网上的例子,用一个简单的delete就行了。
2.展开一个节点,expandChildrenOf