首先来看效果图:
废话少说,来看代码
java端:
因为有节点,所以我将从数据库查找出来的值,封装成一个XMLBean;
public class XmlBean {
private String planid;// 预案id
private String planname;// 预案名称
//此变量的名字必须是children否则在页面中不会显示子节点
public List<XmlBean> children = new ArrayList<XmlBean>();// 预案对象的集合
}
实现类:Flex端执行此方法,
public List<XmlBean> planexamine() {
List<XmlBean> list = new ArrayList<XmlBean>();
//向XMLBean中设置值,此值应该是数据库中查找出来的
XmlBean xb1 = new XmlBean();
xb1.setPlanid("4");
xb1.setPlanname("未通过");
xb1.children = planexamine1("4");//调用方法
list.add(xb1);
XmlBean xb2 = new XmlBean();
xb2.setPlanid("3");
xb2.setPlanname("通过");
xb2.children = planexamine1("3");
list.add(xb2);
XmlBean xb3 = new XmlBean();
xb3.setPlanid("1");
xb3.setPlanname("未审核");
xb3.children = planexamine1("1");
list.add(xb3);
return list;
}
java端被调用的方法,连接数据库,查找值:
public static List<XmlBean> planexamine1(String typeid) {
List<XmlBean> list = new ArrayList<XmlBean>();
Connection conn = null;
CallableStatement castma = null;
ResultSet rs = null;
try {
conn = DbManager.getInstance().getConnection();// 得到连接
castma = conn.prepareCall("call YJCZPKG.FIND_PLANEXAMINE(?,?)");
castma.setString(1, typeid);
castma.registerOutParameter(2, OracleTypes.CURSOR);
castma.execute();
rs = (ResultSet) castma.getObject(2);
XmlBean srt;
while (rs.next()) {
srt = new XmlBean();
srt.setPlanid(rs.getString("PLANID"));
srt.setPlanname(rs.getString("PLANNAME"));
list.add(srt);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
DbManager.getInstance().closeAll(rs, castma, conn);
}
return list;
}
Flex端返回结果:
private function resultplan(event:ResultEvent):void
{
var arr:ArrayCollection=event.result as ArrayCollection;
myTree.dataProvider=arr;
}
Tree:
<common:TitledBorderBox title="XXXX列表"
height="100%"
width="25%">
<mx:Tree id="myTree"
width="100%"
height="100%"
doubleClickEnabled="true"
fontSize="12"
doubleClick="fnshow()"
labelField="planname">//与Bean中的名字相同
</mx:Tree>
</common:TitledBorderBox>