首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

Ext同步加载tree的范例

2012-10-15 
Ext同步加载tree的实例?? ? ?基于Ext的TreeNode实现的tree有两种方式加载:一种是同步树,即生成完整的tree。

Ext同步加载tree的实例

?? ? ?基于Ext的TreeNode实现的tree有两种方式加载:一种是同步树,即生成完整的tree。另外一种是异步树,即点击父节点时才生成子节点。对于节点过多的树,推荐使用异步方式加载树节点;对于节点较少的树,可以使用同步方式加载树节点,即完整生成树节点。此文所谈的即是基于ExtJs的同步树的实现方法。

?? ? ?这里只介绍同步树的的后台实现,对于页面js实现,及数据库表结构,实现图等均不鳌述。

?? ??1. 同步树的节点实体代码,于异步实体的区别在于多了children域,在转换为json数据时包含了Ext树所能解析的children内容

?? ??

      /* 类说明: 同步加载树型结点<br>        */        public class TreeNode extends BaseObject {                     private String id;                   private String text;                    private boolean leaf;                  private boolean disabled;                   private String cls;                   private String iconCls;                private String href;                 private String hrefTarget;                    private String listeners;                     private List children = new ArrayList(); // 存放子结点                    // Omit the get and set method                       ... ...       }  

???2. 对于同步树构造模型数据的后台实现,以迭代方法实现,即给定一个根节点id,查询其下级节点,如是叶节点则表示是节点的终端,如不是叶节点则表示还包含下级节点,以迭代方式继续查询下级节点。

?? ?

   public TreeNode getTreeNodes(TreeNode treeNode) {        BigDecimal id = NumberUtils.createBigDecimal((treeNode.getId()));                     ScTreeMenu scTreeMenu = scTreeMenuDAO.selectByPrimaryKey(id);                       if(scTreeMenu != null) {               try {                        BeanUtils.copyProperties(treeNode, scTreeMenu);              } catch (IllegalAccessException e) {                   e.printStackTrace();                } catch (InvocationTargetException e) {                     e.printStackTrace();                 }             }                        ScTreeMenuExample example = new ScTreeMenuExample();            example.setParent(id);            example.setParent_Indicator(ScTreeMenuExample.EXAMPLE_EQUALS);                          List list = scTreeMenuDAO.selectByExample(example);                  for (Iterator iterator = list.iterator(); iterator.hasNext();) {                ScTreeMenu temp = (ScTreeMenu) iterator.next();                 TreeNode childNode = new TreeNode();                try {                   BeanUtils.copyProperties(childNode, temp);                    // 判断是否为子节点                                             if (Boolean.getBoolean(scTreeMenu.getLeaf())) {                        treeNode.addChild(childNode); // 如是,添加此节点                     } else {                         childNode = getTreeNodeByRole(childNode);                        treeNode.addChild(childNode); // 如不是,迭代查询其子节点,并添加                     }                } catch (Exception e) {                     e.printStackTrace();                 }             }             return treeNode;         }  
?

?

?

热点排行