`
allbin1983
  • 浏览: 35742 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

和“夫子”一起学simple:树结构

阅读更多

开场白:

       先啰嗦两句吧,在该系统的不断的深入开发中,发现系统中需要的树结构显示的地方很多,而且树上的事件也多种多样。我记得以前做开发的时候,定义的树结构是自己写的一些JS代码,说实话真的很麻烦。不过现在随便在Google或Baidu上一搜,会有很多高手或者开源给出的简单用法。当然了,现在既然选择了用simple作为开发的框架。那就来摸索摸索simple给出的树组件吧。现在就开始吧。

Simple之旅:

       还是先来介绍下这次要实现的内容吧。

       树结构一:在各种题型或者试卷编辑的时候都会存在“科目”的选择。当然把“科目”写成”<select>”也是可以实现的,可是在系统里“科目”已经作为字典的形式存在了。使用树的主要目的。

一:要利用字典。

二:要应用上更简单。

三:样式统一好看。

       树结构二:需要把页面分成左右两边,左边是树结构,右边是内容。点击左边的树节点触发事件,在右边的页面上响应左边的事件发生变化.

       下面就来看看我是怎么实现的吧。

       先来看下树结构一:这次先看看效果图吧:

       点击红色的地方就弹出了我们想要的树结构。首先大家要理解这里树结构里的数据是来自字段,所以我用到了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"

              handleClass="com.app.online.exampaper.ExamPaperTree">

       </treenode>

</tree>

       JAVA类的实现:

public classExamPaperTree extends AbstractPlatformTree {

    @Override

    publicCollection<? extendsAbstractTreeNode> getTreenodes(finalComponentParameter compParameter, finalAbstractTreeNode treeNode)

           throwsException {

       final AbstractTreeBean treeBean = (AbstractTreeBean) compParameter.componentBean;

       final Collection<SysDict> sysDicts = SysDictUtils.getSysDictChilds(SysDictUtils.subject_level);

       final List<AbstractTreeNode> childNodes = new ArrayList<AbstractTreeNode>();

       treeNode.setJsClickCallback("$Actions.loc('/online/exampaper/exampaper.jsp');");

       for(final SysDict sysDict : sysDicts) {

           final TreeNode childNode = new TreeNode(treeBean, treeNode, sysDict.getText());

           childNode.setImage(OrgUtils.deployPath+ "css/blue/images/chart.png");

           final StringBuilder builder = new StringBuilder();

           builder.append("$Actions.loc(\"/online/exampaper/exampaper.jsp?");

           builder.append("subject__eq=");

           builder.append(sysDict.getName());

           builder.append("\");");

           childNode.setJsClickCallback(builder.toString());

           childNodes.add(childNode);

       }

       return childNodes;

    }

}

       就这么多的代码就实现了我们需要的实现。代码真的很简单,还是介绍下我可以理解的tree组件和treenode的属性吧。

containerId:大家看了代码后应该明白了,对于于JSP里DIV的id

checkboxes:显示复选框

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。

结束语:

       好吧,今天的学习就到这里吧,小弟不才,关于这个组件就只能介绍这么多了。有深入了解的朋友们,还希望你们不要吝啬你的手,在你的键盘上挥洒几下,给俺留点高见吧。

分享到:
评论

相关推荐

    listview实现树结构

    listview实现的tree树结构 ui美观 高端大气上档次,完美实现结构树,【最好使用真机测试,不然可能会报错】。唯一不足之处在于展开状态的控制,跟节点设置展开后只是图标变了,子节 点都没有出现。

    孔夫子旧书网案例分析.doc

    孔夫子旧书网案例分析 ...孔夫子旧书网的用户群体主要是年轻人和知识分子,具有较高的文化和教育水平。 市场定位 孔夫子旧书网的市场定位主要是面向年轻人和知识分子,提供一个安全、便捷的二手书交易平台。

    ssm智夫子答题系统

    "SSM智夫子答题系统"是一个基于Java的在线考试平台,它利用了Spring、SpringMVC和MyBatis(SSM)这三大主流Java Web框架进行开发。这个项目旨在提供一个基础的试题管理和答题功能,使教育管理者能够发布考试信息,而...

    智夫子在线考试系统

    "智夫子在线考试系统"是一款专为教育和培训领域设计的在线考试平台,它集成了前后端功能,用户在下载后可以直接运行,无需复杂的部署流程。系统的核心是基于Java编程语言开发,这使得它具备良好的跨平台能力和稳定性...

    2020年湖北省春麻城市夫子河中学八年级语文期中考试试题人教版.doc

    本资源为湖北省春麻城市夫子河中学八年级语文期中考试试题,涵盖古诗词名句填写、语文基础和语文实践活动、综合性学习等多个方面。 古诗词名句填写 在古诗词名句填写部分,考生需要填写六个古诗词名句,涵盖杜牧...

    南京市夫子庙小学毕业考试数学试题精选.doc

    通过这份试卷,我们可以看出南京市夫子庙小学对于六年级学生的数学能力有着全面且深入的要求,不仅包含基本运算技能,还包括解方程、应用题、几何图形、比例与比例尺、数的读写和近似值等多个核心数学概念。...

    ssm智夫子答题系统(附sql,jar包,功能演示视频)

    SSM智夫子答题系统是一款基于Java开发的在线答题应用,它利用了Spring、Spring MVC和MyBatis三个框架的集成,即所谓的SSM框架。这个框架组合在Java Web开发中非常常见,因其强大的功能和灵活性而备受青睐。下面将...

    城市游憩商业区环境设施系统研究——以南京夫子庙环境设施为例

    城市游憩商业区环境设施系统研究涉及城市规划、环境设计、公共艺术和行为心理学等多个领域。从南京夫子庙环境设施的研究案例出发,本研究探讨了环境设施如何影响游憩商业区的形象构建和游憩人群行为规律。 环境设施...

    康夫子打造“机器人全科医生”.pdf

    康夫子首先以孕妇群体为切入点,开发了一款针对孕妇饮食的App,通过营养学知识图谱提供饮食分析和建议。然而,这个尝试并未取得预期的成功,原因在于市场需求定位不准确,营养建议非刚需,以及项目与人工智能技术的...

    夫子庙导游词精选.doc

    夫子庙前的广场是景区的核心部分,其中大照壁高大壮观,长110米,象征着秦淮河的长度,起到遮挡和美化的作用。泮池,以秦淮河为天然河道,是孔庙的传统元素,象征着学术的源泉。文德桥因其儒家理念而得名,据说在...

    南京夫子庙小学一年级上册数学期中检测卷精选.doc

    这份南京夫子庙小学一年级上册数学期中检测卷涵盖了多个基本的数学概念,适合一年级学生巩固和检验学习成果。试卷主要包括以下几个方面的知识点: 一、比较大小:此部分要求学生理解并能正确使用“>”、“”和“=...

    simple_os_book:简单的操作系统书

    操作系统的基本原理与简单实现--基于ucore OS + RISC-V对于在校的学生和已经参加工作的工程师而言,能否以较小的时间和精力比较全面地了解操作系统呢?陆游老夫子说过“纸上得来终觉浅,绝知此事要躬行”,也许在...

    小夫子国学幼儿园环境创设方案.doc

    【小夫子国学幼儿园环境创设方案】的文档主要阐述了如何将中国优秀传统文化融入幼儿园的环境设计中,旨在创建一个既能体现国学精髓又能促进幼儿全面发展的教育环境。以下是对该方案的详细解析: 1. 办园理念与宗旨...

    南京夫子庙景区导游词.doc

    南京夫子庙景区导游词.doc

    南京夫子庙组织手册0801.doc

    南京夫子庙组织手册0801.doc

    卡通老夫子讲课背景的汉字教学PPT模板.zip

    这是一套卡通老夫子讲课背景的,汉字教学PPT模板,共20张。第一PPT模板网提供精美卡通幻灯片模板免费下载; 关键词:可爱老夫子、儿童幻灯片背景图片,动态儿童教育PPT模板,彩色扁平化幻灯片图表,汉字学习PPT课件...

    山东省曲阜夫子学校2020届高三语文12月月考试题.doc

    【标题】:“山东省曲阜夫子学校2020届高三语文12月月考试题.doc” 【描述】:“山东省曲阜夫子学校2020届高三语文12月月考试题.doc” 【标签】:“高中语文试卷 课件 WORD 资料” 这篇文档涉及的是一个高中语文...

    Confucius:创业项目IT教育Kong夫子

    "Confucius:创业项目IT教育Kong夫子"是一个以儒家先贤孔子命名的创业项目,主要聚焦于IT教育领域。项目的核心理念可能是借鉴孔子的教育思想,以培养具有全面素质和专业技能的IT人才为目标。在当前数字化时代,IT教育...

    网夫子协同办公平台,免费协同办公系统

    网夫子协同办公平台,该平台包括以下功能: 1) 所见即所得的网站设计功能,不需要专业技术人员,只需点点鼠标、敲敲键盘即可自己制作出专业美观的网站; 2) 强大的工作流程自定义功能,可方便地定制出符合公司实际...

Global site tag (gtag.js) - Google Analytics