和“夫子”一起学simple:树结构
?????? 点击红色的地方就弹出了我们想要的树结构。首先大家要理解这里树结构里的数据是来自字段,所以我用到了dictSelect组件。下面是一些代码。
<dictSelect name="prjAct_subject" dictName="subject_level"
title="科目选择" bindingText="subject_text" bindingId="subject">
</dictSelect>
?????? 我理解的一些属性含义:
dictName:字典的名字,刚刚也介绍了,数据来自于字典。每个字典都有一个唯一的名字。
Title:窗口显示的名字
bindingId:返回值的Id返回给页面上的谁?——SU0
bindingText:返回值的中文返回给页面上的谁?---——大学语文
dictType:有两个选择(list,tree),默认是tree
list如图所示:
Tree如图所示:
Draggable:窗口是否可以拖动,默认是true,可以的。
?????? 其他的一些属性没有测试,有的测试了没看出变化就不得而知了,还希望其他知道的朋友们告诉一下。
?????? 树结构一就先了解这么多吧,下面再来看看树结构二吧。树结构二要比树结构一麻烦些,因为它本身的功能多,待实现的内容丰富多样。而且树的显示结构完全是自定义的。从官方的Demo网站可以知道,要实现树结构需要用到<tree>组件。
?????? 在第一张图里已经显示了我们的效果,这里就不在单独贴图出来了。直接看看代码吧。
?????? JSP:最简单的实现
<div id="examPaperNavTree"></div>
?????? JSP对应的XML:也是相当的简单:
<tree name="examPaperNavTree" containerId="examPaperNavTree">
?????? <treenode text="科目" opened="true"
????????????? handlestyle="padding: 1px; border: 1px solid #999999;" src="http://simpleframework.net/%24resource/default/myFileSelect/jsp/dl.jsp?__file_Id=22166&job=sys_account_normal&loc=true">
checkboxesThreeState:复选框的级联选中
opened:是否展开该节点
dynamicLoading:动态加载,需要的时候才加载
check:是否默认选中(1代表选中)
contextMenu:关联右键菜单:(例如contextMenu=”test”)
<menu name="test">
?????????? <menuitem title="添加"></menuitem>
?????????? <menuitem title="删除"></menuitem>
</menu>
?????? OK吧。看看类里面的实现吧:
finalAbstractTreeNode treeNode:是“科目”这个节点。
treeNode.setJsClickCallback("$Actions.loc('/online/exampaper/exampaper.jsp');"):该方法可以给节点设置事件,本事件是点击后跳转到某个页面。如果是刷新右边的一个表格的话,也可以写为.$Actions[‘tablePagerName’](‘参数’);
finalCollection<SysDict> sysDicts = SysDictUtils.getSysDictChilds(SysDictUtils.subject_level);这是我获得字段的实现。
具体实现如下:
public?static?Collection<SysDict> getSysDictChilds(final?String dictType) {
???????final?ArrayList<SysDict> al =?new?ArrayList<SysDict>();
???????final?SysDict sysDict = DictUtils.getSysDictByName(dictType);
???????final?ITableEntityManager temgr = (ITableEntityManager) sysDict.dataObjectManager;
???????final?IQueryEntitySet<SysDict> qs = temgr.query(new?ExpressionValue("documentid=?",?new?Object[] { sysDict.getId() }), SysDict.class);
?????? SysDict tSysDict;
???????while((tSysDict = qs.next()) !=?null) {
?????????? al.add(tSysDict);
?????? }
???????return?al;
??? }
?????? 把它写成一个工具类,是为了开发应用的方便性。到这里就介绍完了这两种树结构。当然了,还有很多不了解的地方,以后还得仔细研究simple。
结束语:
?????? 好吧,今天的学习就到这里吧,小弟不才,关于这个组件就只能介绍这么多了。有深入了解的朋友们,还希望你们不要吝啬你的手,在你的键盘上挥洒几下,给俺留点高见吧。
原文:http://simpleframework.net/blog/v/22171.html