我目前正在使用Tree控件,并且是我第一次深入研究这个,我需要您的意见和建议。
我的树控件正在从.NET Web服务检索数据。我的.NET webservice返回一个字符串,该字符串通过命令DataSet.GetXML方法从数据集中解析。
Function MyFunc() as String
'Populate the dataset here
'.......
Return DataSet.GetXML()
End Function
在我的flex应用程序中,我将webservice返回的字符串值转换为XML:
private var _xmlMyData:XML;
private function myResultHandler(event:ResultEvent) :void
{
_xmlMyData = XML(event.result);
// This script to view the XML data in Text Area
var strData:String = String(event.result);
taData.text = strData;
}
然后我将传递给我的xmlListCollection控件
<mx:XMLListCollection id="xmllc_myData" source="{_xmlMyData.Table}" />
<mx:TextArea id="taData" width="300" height="100" />
然后绑定到我的树控件:
<mx:Tree id="treeOffshore" dataProvider="{xmllc_myData}" labelField="DESCN" showRoot="false">
</mx:Tree>
在文本区域控件中查看数据时,我有以下内容:
<NewDataSet>
<Table>
<CODE>A1</CODE>
<DESC>Area One</DESC>
</Table>
<Table>
<CODE>B2</CODE>
<DESC>Base Two</DESC>
</Table>
<Table>
<CODE>C4</CODE>
<DESC>Class Four</DESC>
</Table>
<Table>
<CODE>D8</CODE>
<DESC>Demo Eight</DESC>
</Table>
</NewDataSet>
这是树视图呈现的方式:
Area One
A1
Area One
Base Two
B2
Base Two
Class Four
C4
Class Four
Demo Eight
D8
Demo Eight
我想要的是只能在第一级定义描述:
Area One
Base Two
Class Four
Demo Eight
我需要做的下一件事是实际上应该根据第一级的CODE来填充树视图的第二级。
例如:
Area One
Sub Item Area One
Sub Item Area Two
Base Two
Sub Item Base Two
Sub Item Base Three
Sub Item Base Four
Class Four
Sub Item Class Four
Demo Eight
Sub Item Demo Eight
Sub Item Demo Nine
Sub Item Demo Ten
Sub Item Demo Eleven
我对这个树控制事物(以及flex)都很陌生,并且对概念的掌握有限,无法实现这一目标。
我正在考虑修改我最初检索的XML数据,并且可能会为每个节点插入子项,尽管我对如何实现相同的内容进行了绑定。
另一方面,为了给你们一些进一步的细节,树视图数据实际上来自三个表,其中表1是基表,表2包含表1的子表,表3包含子表表3中的数据。
我真诚地感谢您对此的投入。我正在进入Flex的世界,这是在我们的组织中采用这种技术的一个成败的场景。
感谢并希望就如何做到这一点获得一些好的建议。
此致