ext+ssh中tree的实现完整代码

1.extjs中调用tree实现树列表功能

	goodsTree.on('click', function(node){
			treeClicNode.id = node.id;
			treeClicNode.text= node.text;
			treeClicNode.depth = node.getDepth();
			var id = node.id.split(":")[1];
        	 if(node.getDepth()>=2){
            	 Ext.Ajax.request({
            		 url : '${loadName}',
            		 params:{
                		 "systemIdToTable.treeId":id
            		 },
            		 success : function(response) {
							var resText = Ext.util.JSON.decode(response.responseText);						
							if (resText.result) {
								commForm.getForm().reset();// 重置公共模块中所有选项
														Ext.getCmp('content-panel').layout.setActiveItem(resText.data.tableName);
					 			  Ext.get(resText.data.tableName).slideIn("r");
						    	} else {
								Ext.Msg.alert("提示", "操作失败!");
							}
						},
						failure : function(response) {
							Ext.Msg.alert("提示",
									"<font color='red'>服务器连接失败,请联系管理员!</font>");
						}
                	 });
	    	
	    	}
	    });

Ext.onReady(function(){
		var border = new Ext.Viewport({
			layout:'border',
			renderTo:Ext.getBody(),
			items:[{
				region:'center',
				split:true,
				border:true,
				layout:'border',
				items:[goodsTree]
			}]
		});		
});

 2.tree实现的js代码goodsTree.js

	var goodsTree = new Ext.tree.TreePanel({
		id : "deptTree",
		autoScroll : true,
		title : "<div class=\"icon_folder\">物品列表</div>",
		region : "west",
		root : new Ext.tree.AsyncTreeNode({
					id : "conGoods:1",
					text : "物品列表"
				}),
		margins : '0 0 0 0',
		layout : 'fit',
		split : true,
		width : 200,
		minSize : 100,
		maxSize : 350,
		useArrows : true,
		collapsible : true,// 可折叠
		rootVisible : true,
		bodyStyle : "background:#C5D3E7 ;"
		});

	
	var selectNode = {};
	var dataUrll;
	goodsTree.on("beforeload", function(node) {
		goodsTree.loader.dataUrl = "/KingeeAST/ast/tree/goodsTreeLoder.action?key="
				+ node.id;
	});

 3.调用goodsTreeLoder后返回的ftl文件goodsTree.ftl

[
<#list model.childConsumables as f>
    {"id":"conGoods:${f.id!""}","text":"${f.name!""}","leaf":<#if f.childConsumables?size gt 0>false<#else>true</#if>,"check":false
    }<#if f_has_next>,</#if>
</#list>
]

 4.配置struts映射文件struts-tree.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC 
	"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
	"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
	<package name="kingee-ast-tree" extends="kingee_ast_default" namespace="/ast/tree">
	       <action name="goodsTreeLoder" class="businessTreeAction">
		    <result name="conGoods" type ="freemarker">/common/tree/goodsTree/goodsTree.ftl</result>
	       </action>
	</package>
</struts>

 5.配置spring映射文件applicationContext-tree-action.xml

<!-- 系统树	  Action -->
        <bean id="businessTreeAction" class="com.kingee.ast.tree.action.BusinessTreeAction" scope="prototype">
        	<property name="hibernateTemplate" ref="astHibernateTemplate"></property>
        	<property name="classDefine">
        		<map>
		 <entry key="conGoods"     value="com.kingee.ast.system.pojo.SystemConsumables"></entry>
        		</map>
        	</property>
        </bean>

 6.树的具体实现action代码BussinessTreeAction.java

public class BusinessTreeAction extends ActionSupport{
	
	private HibernateTemplate hibernateTemplate;
	
	private Map<String, String> classDefine;
	
	private String key;
	
	private Object model;
	
	@Override
	public String execute() throws Exception {
		if(null==key || "".equals(key)){
			return SUCCESS;
		}
		String[] keys=key.split(":");
		if(keys.length>1){ 
			String type=keys[0];
			String id=keys[1];
			if("1".equals(id)){
				try {
					Class clzz=Class.forName(classDefine.get(type));
					model=hibernateTemplate.get(clzz, "1");
				} catch (Exception e) {
					e.printStackTrace();
				}
			}else{
				    model=hibernateTemplate.get(classDefine.get(type), id);
			}
			return type;
		}else{
			return SUCCESS;
		}
	}
}

 7.写出树中要展示的列表的实体类SysConsumables.java

public class SystemConsumables extends MunalBean{
	private String name;
	private String pid;
                private String id;
	private SystemConsumables parentConsumables;
	private Set<SystemConsumables> childConsumables;
}//getter和setter省略了

 8.写出实体类hibernate的配置文件,自对自的映射systemConsumables.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
	"-//Hibernate/Hibernate Mapping DTD//EN"
	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

<hibernate-mapping package="com.kingee.ast.system.pojo">
	<class
		name="SystemConsumables"
		table="ast_sys_consumables"
		dynamic-update="true"
	>
		<meta attribute="sync-DAO">true</meta>
		<id
			name="Id"
			type="string"
			column="id"
		>
			<generator class="uuid.hex"/>
		</id>
		
		<property
			name="name"
			column="name"
			type="string"
			length="100"
		/>
						
		<property
			name="deleted"
			column="deleted"
			type="boolean"
		/>
		
		<many-to-one name="parentConsumables" class="com.kingee.ast.system.pojo.SystemConsumables" column="pid">
		</many-to-one>
		
		<set name="childConsumables" lazy="true" inverse="true" order-by=" id desc ">
			<key column="pid"></key>
			<one-to-many class="com.kingee.ast.system.pojo.SystemConsumables"/>
		</set>
		
	</class>	
</hibernate-mapping>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值