首页 > 其他 > 详细

NW开发教程系列一:左树右表的页面

时间:2014-03-17 18:52:56      阅读:845      评论:0      收藏:0      [点我收藏+]

左树右表的页面实际上也是对单独一张表进行增删改查,有点不同是,当点击左边的树节点时,需要查询表的数据,另外在增加时需要先选中树节点,然后增加的记录在这个节点类别下,比如类型为“计算机”,那么增加的一台电脑设备如thinkpad,就是属于这个“计算机”类别的,如下图所示:

bubuko.com,布布扣

 bubuko.com,布布扣

同样省略前面的步骤

7、Service开发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
 * 产品,左树右表
 *
 * @author xuqc
 * @date 2013-10-17 下午02:34:41
 */
@Service
public class T206Service extends AbsToftServiceImpl {
 
    private AggregatedValueObject billInfo;
 
    public AggregatedValueObject getBillInfo() {
        if(billInfo == null) {
            billInfo = new HYBillVO();
            VOTableVO vo = new VOTableVO();
 
            vo.setAttributeValue(VOTableVO.BILLVO, HYBillVO.class.getName());
            vo.setAttributeValue(VOTableVO.HEADITEMVO, ProductDetailVO.class.getName());
            vo.setAttributeValue(VOTableVO.PKFIELD, ProductDetailVO.PK_PRODUCT_DETAIL);
            billInfo.setParentVO(vo);
        }
        return billInfo;
    }
 
}

8、Controller开发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
 * 左树右表
 *
 * @author xuqc
 * @date 2013-10-17 下午02:55:09
 */
@Controller
@RequestMapping(value = "/busi/scene/t206")
public class T206Controller extends AbsToftController {
 
    @Autowired
    private T206Service t206Service;
 
    @Override
    public T206Service getService() {
        return t206Service;
    }
 
    @Override
    public String getTreePkField() {
        return ProductDetailVO.PK_CATEGORY;
    }
 
    @RequestMapping(value = "/getItemTree.json")
    @ResponseBody
    public List<TreeVO> getTree() {
        String whereSql = " isnull(dr,0)=0 order by categorycode";
        CategoryVO[] categorys = (CategoryVO[]) NWDao.getInstance().queryForSuperVOArrayByWhereClause(CategoryVO.class,
                whereSql);
        List<TreeVO> roots = new ArrayList<TreeVO>();
        if(categorys == null || categorys.length == 0) {
            return roots;
        }
        HashMap<String, List<TreeVO>> allLeafs = new HashMap<String, List<TreeVO>>();
        // 对子节点进行分组
        for(CategoryVO category : categorys) {
            TreeVO vo = new TreeVO();
            vo.setId(category.getPk_category());
            vo.setCode(category.getCategorycode());
            vo.setText(category.getCategorycode() + " " + category.getCategoryname());// 编码+名称显示
            if(StringUtils.isBlank(category.getPk_parentclass())) {
                vo.setLeaf(false);
                roots.add(vo);
                continue;
            }
            if(allLeafs.get(category.getPk_parentclass()) == null) {
                ArrayList<TreeVO> list = new ArrayList<TreeVO>();
                list.add(vo);
                allLeafs.put(category.getPk_parentclass(), list);
            } else {
                allLeafs.get(category.getPk_parentclass()).add(vo);
            }
        }
        return getTrunk(allLeafs, roots);
    }
 
    private List<TreeVO> getTrunk(HashMap<String, List<TreeVO>> leafs, List<TreeVO> trunks) {
        for(TreeVO trunk : trunks) {
            if(leafs.get(trunk.getId()) == null || leafs.get(trunk.getId()).size() == 0) {
                trunk.setLeaf(true);
                continue;
            }
            trunk.setChildren(getTrunk(leafs, leafs.get(trunk.getId())));
        }
        return trunks;
    }
}

 9、对应的jsp文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page language="java" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<html>
    <head>
        <%@ include file="/common/header.jsp"%>
    </head>
    <body>
    <nw:Bill templetVO="${templetVO}" headerGridImmediatelyLoad="true" bodyGridsPagination="false" headerGridSingleSelect="true" tableColumns="2"/>
    </body>
    <script type="text/javascript">
    //左树右表的档案
    var itemTree = new uft.extend.tree.Tree({
        id : ‘itemTree‘,
        treeRootNodeText:‘产品分类‘, //默认根节点名称
        rootVisible : true,//是否显示根节点
        dataUrl : ‘getItemTree.json‘, //默认数据来源
        isTreeFilter:true//是否在树的工具栏加上过滤框
    });
    ${moduleName}.appUiConfig.leftTree=itemTree;   
    ${moduleName}.appUiConfig.treePkField=‘pk_category‘;       
    WOHB12Toolbar = Ext.extend(uft.jf.ToftToolbar, {
        getBtnArray : function(){
            var btns = new Array();
            btns.push(this.btn_query);
            btns.push(this.btn_add);
//          btns.push(this.btn_copy);
            btns.push(this.btn_edit);
            btns.push(this.btn_save);
            btns.push(this.btn_can);
            btns.push(this.btn_del);
            btns.push(this.btn_ref);
            btns.push(this.btn_list);
            btns.push(this.btn_card);
//          btns.push(this.btn_print);
            return btns;
        }
    });
    ${moduleName}.appUiConfig.toolbar = new WOHB12Toolbar();
    var app = new uft.jf.ToftPanel(${moduleName}.appUiConfig);
 
    //工具栏的按钮一般都抛出了点击前和点击后事件,比如beforeadd和add,beforedel,del等
    ${moduleName}.appUiConfig.toolbar.addListener(
        ‘beforeadd‘,function(toolbar){//如果不想新增事件继续执行,需要返回false
            var tree = this.app.leftTree;
            if(!tree.getSelectedNode() || tree.getSelectedNode().id==null ||
                    tree.getSelectedNode().id==‘‘ ){
                    uft.Utils.showWarnMsg(‘请先选择公开类型节点!‘);
                    return false;
            }
            //非末级节点,不能增加档案
            if(!tree.getSelectedNode().isLeaf()){
                uft.Utils.showWarnMsg(‘末级节点才允许增加!‘);
                return false;
            }
            Ext.getCmp("pk_category").setValue(tree.getSelectedNode().id);
        }
    );
    ${moduleName}.appUiConfig.toolbar.addListener(
        ‘add‘,function(toolbar){
            var tree = this.app.leftTree;
            Ext.getCmp("pk_category").setValue(tree.getSelectedNode().id);
        }
    );
    </script>
    <%@ include file="/common/footer.jsp"%>
</html>

具体的示例可以参考:http://xuqc.fangwei.name:9080/demo-webapp administrator/143305

NW开发教程系列一:左树右表的页面,布布扣,bubuko.com

NW开发教程系列一:左树右表的页面

原文:http://www.cnblogs.com/aimer311/p/3605435.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!