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