1.GoodsController中显示的方法如下:

@RequestMapping(params = "goodsgrid")
@ResponseBody
public Object goodsgrid(GoodEntity good,HttpServletRequest request, HttpServletResponse response, TreeGrid treegrid) {
CriteriaQuery cq = new CriteriaQuery(GoodEntity.class);
if("yes".equals(request.getParameter("isSearch"))){
treegrid.setId(null);
good.setId(null);
}
if(null != good.getGoodsName()){
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, good);
}
if (treegrid.getId() != null) {
int c = Integer.parseInt(treegrid.getId());
cq.eq("ggood.id", c);
}
if (treegrid.getId() == null) {
cq.isNull("ggood");
}
cq.add();
List<TreeGrid> goodsList=null;
goodsList =systemService.getListByCriteriaQuery(cq, false);

if(goodsList.size()==0&&good.getGoodsName()!=null){
cq = new CriteriaQuery(GoodEntity.class);
GoodEntity pargood = new GoodEntity();
good.setGgood(pargood);
org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, good);
goodsList =systemService.getListByCriteriaQuery(cq, false);
}
List<TreeGrid> treeGrids = new ArrayList<TreeGrid>();
TreeGridModel treeGridModel = new TreeGridModel();
treeGridModel.setTextField("goodsCode"); 
treeGridModel.setParentText("ggood_goodsName");
treeGridModel.setParentId("ggood_id");
treeGridModel.setSrc("goodsDetail");
treeGridModel.setIdField("id");
treeGridModel.setChildList("goods"); 
Map<String,Object> fieldMap = new HashMap<String, Object>();
fieldMap.put("goodsName", "goodsName");
fieldMap.put("addTime", "addTime");
treeGridModel.setFieldMap(fieldMap);
treeGrids = systemService.treegrid(goodsList, treeGridModel);

JSONArray jsonArray = new JSONArray();
for (TreeGrid treeGrid : treeGrids) {
jsonArray.add(JSON.parse(treeGrid.toJson()));
}
System.out.println(jsonArray);
return jsonArray;
}

父物料下显示子物料的方法

@RequestMapping(params = "setPFunction")
@ResponseBody
public List<ComboTree> setPFunction(HttpServletRequest request, ComboTree comboTree) {
CriteriaQuery cq = new CriteriaQuery(GoodEntity.class);
if(null != request.getParameter("selfId")){
cq.notEq("id", request.getParameter("selfId"));
}
if (comboTree.getId() != null) {
// String fname= jdbcTemplate.queryForObject("select goods_name from t_item where goods_id=?",String.class,comboTree.getId()) ;
cq.eq("ggood.id", comboTree.getId());
}
if (comboTree.getId() == null) {
cq.isNull("ggood");
}
cq.add();
List<GoodEntity> goodsList = systemService.getListByCriteriaQuery(cq, false);
List<ComboTree> comboTrees = new ArrayList<ComboTree>();
ComboTreeModel comboTreeModel = new ComboTreeModel("id", "goodsName", "goods");
comboTrees = systemService.ComboTree(goodsList, comboTreeModel, null, true);
return comboTrees;

}

2.该商品对应的实体类的方法GoodEntity:

@Entity
@Table(name = "wsc_goods", schema = "")
@DynamicUpdate(true)
@DynamicInsert(true)
@SuppressWarnings("serial")
public class GoodEntity implements java.io.Serializable {

/**上级类目*/
private GoodEntity ggood;
/**下级类目*/
private List<GoodEntity> goods = new ArrayList<GoodEntity>();
/**商品代码*/
private java.lang.Integer id;
/**商品名称*/
private java.lang.String goodsName;
/**商品图片*/
private java.lang.String goodsImg;
/**goodsSpe*/
private java.lang.String goodsSpe;
/**商品单价*/
private java.math.BigDecimal goodsPrice;
/**商品详情*/
private java.lang.String goodsDetail;
/**goodsNum*/
private java.lang.Integer goodsNum;
/**添加时间*/
private java.util.Date addTime;

/**ctgId*/
private java.lang.Integer ctgId;
/**isRecommend*/
private java.lang.Integer isRecommend;
/**订单状态*/
private java.lang.Integer status;
/**类型*/
private java.lang.Integer type;
/**物料代码*/
private java.lang.String goodsCode;
/**商品规格*/
private java.lang.String goodsModel;
/**单位*/
private java.lang.String goodsUnit;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parentid")
public GoodEntity getGgood() {
return ggood;
}

public void setGgood(GoodEntity ggood) {
this.ggood = ggood;
}

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "ggood")
public List<GoodEntity> getGoods() {
return goods;
}

public void setGoods(List<GoodEntity> goods) {
this.goods = goods;
}
@Column(name ="add_time",nullable=true,length=50)
public java.util.Date getAddTime() {
return addTime;
}

public void setAddTime(java.util.Date addTime) {
this.addTime = addTime;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String 商品代码
*/

/**
*方法: 取得java.lang.String
*@return: java.lang.String 商品名称
*/
@Column(name ="GOODS_NAME",nullable=true,length=50)
public java.lang.String getGoodsName(){
return this.goodsName;
}
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name ="GOODS_ID",nullable=true,length=255)
public java.lang.Integer getId() {
return id;
}

public void setId(java.lang.Integer id) {
this.id = id;
}

/**
*方法: 设置java.lang.String
*@param: java.lang.String 商品名称
*/
public void setGoodsName(java.lang.String goodsName){
this.goodsName = goodsName;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String 商品图片
*/
@Column(name ="GOODS_IMG",nullable=true,length=255)
public java.lang.String getGoodsImg(){
return this.goodsImg;
}

/**
*方法: 设置java.lang.String
*@param: java.lang.String 商品图片
*/
public void setGoodsImg(java.lang.String goodsImg){
this.goodsImg = goodsImg;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String goodsSpe
*/
@Column(name ="GOODS_SPE",nullable=true,length=255)
public java.lang.String getGoodsSpe(){
return this.goodsSpe;
}

/**
*方法: 设置java.lang.String
*@param: java.lang.String goodsSpe
*/
public void setGoodsSpe(java.lang.String goodsSpe){
this.goodsSpe = goodsSpe;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String 商品单价
*/
@Column(name ="GOODS_PRICE",nullable=true,length=255)
public java.math.BigDecimal getGoodsPrice(){
return this.goodsPrice;
}

/**
*方法: 设置java.lang.String
*@param: java.lang.String 商品单价
*/
public void setGoodsPrice(java.math.BigDecimal goodsPrice){
this.goodsPrice = goodsPrice;
}
/**
*方法: 取得java.lang.String
*@return: java.lang.String goodsNum
*/
@Column(name ="GOODS_NUM",nullable=true,length=255)
public java.lang.Integer getGoodsNum(){
return this.goodsNum;
}

/**
*方法: 设置java.lang.String
*@param: java.lang.String goodsNum
*/
public void setGoodsNum(java.lang.Integer goodsNum){
this.goodsNum = goodsNum;
}

/**
*方法: 取得java.lang.Integer
*@return: java.lang.Integer 订单状态
*/
@Column(name ="STATUS",nullable=true)
public java.lang.Integer getStatus(){
return this.status;
}

/**
*方法: 设置java.lang.Integer
*@param: java.lang.Integer 订单状态
*/
public void setStatus(java.lang.Integer status){
this.status = status;
}

@Column(name ="goods_detail",nullable=true)
public java.lang.String getGoodsDetail() {
return goodsDetail;
}

public void setGoodsDetail(java.lang.String goodsDetail) {
this.goodsDetail = goodsDetail;
}

@Column(name ="ctg_id",nullable=true)
public java.lang.Integer getCtgId() {
return ctgId;
}

public void setCtgId(java.lang.Integer ctgId) {
this.ctgId = ctgId;
}

@Column(name ="is_recommend",nullable=true)
public java.lang.Integer getIsRecommend() {
return isRecommend;
}

public void setIsRecommend(java.lang.Integer isRecommend) {
this.isRecommend = isRecommend;
}

@Column(name ="type",nullable=true)
public java.lang.Integer getType() {
return type;
}

public void setType(java.lang.Integer type) {
this.type = type;
}

@Column(name ="goods_code",nullable=true,length=255)
public java.lang.String getGoodsCode() {
return goodsCode;
}

public void setGoodsCode(java.lang.String goodsCode) {
this.goodsCode = goodsCode;
}
@Column(name ="goods_model",nullable=true,length=255)
public java.lang.String getGoodsModel() {
return goodsModel;
}

public void setGoodsModel(java.lang.String goodsModel) {
this.goodsModel = goodsModel;
}
@Column(name ="goods_unit",nullable=true,length=255)
public java.lang.String getGoodsUnit() {
return goodsUnit;
}

public void setGoodsUnit(java.lang.String goodsUnit) {
this.goodsUnit = goodsUnit;
}

}

要注意的是id和parentid的1对多的关系。

3.前端jsp页面的显示页面  goodsList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<t:base type="jquery,easyui,tools,DatePicker"></t:base>
<div id="main_depart_list" class="easyui-layout" fit="true">
<div region="center" style="padding: 1px;">
<t:datagrid name="goodsList" title="商品列表"
actionUrl="goodsController.do?goodsgrid"
treegrid="true" idField="id" pagination="false">
<t:dgCol title="common.id" field="id" treefield="id" hidden="true"></t:dgCol>
<t:dgCol title="商品xsxs" field="goodsDetail" treefield="src" width="120"></t:dgCol>
<t:dgCol title="商品单价" field="goodsPrice" treefield="fieldMap.goodsPrice" width="120"></t:dgCol>
<t:dgCol title="商品详情" field="goodsDetail" treefield="fieldMap.goodsDetail" width="120"></t:dgCol>

<t:dgCol title="物料代码" field="goodsCode" treefield="fieldMap.goodsCode" width="120"></t:dgCol>
<t:dgCol title="货号" field="goodsSpe" treefield="fieldMap.goodsSpe" width="120"></t:dgCol>
<t:dgCol title="单位" field="goodsUnit" treefield="fieldMap.goodsUnit" width="120"></t:dgCol>
<t:dgCol title="商品规格" field="goodsModel" treefield="fieldMap.goodsModel" width="120"></t:dgCol>

<%-- <fmt:formatDate pattern="yyyy-MM-dd hh:mm:ss" value="${myDate}" type="both"/> --%>
<%-- <t:dgCol title="添加时间" field="addTime" treefield="fieldMap.addTime" width="120"></t:dgCol> --%>

<t:dgCol title="操作" field="opt" width="100"></t:dgCol>
<t:dgDelOpt url="goodsController.do?del&id={id}" title="删除"></t:dgDelOpt>
</t:datagrid>
<div id="departListtb" style="padding: 3px; height: 25px">
<div style="float: left;">
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-add" onclick="addOrg()">录入</a>
<a href="#" class="easyui-linkbutton" plain="true" icon="icon-edit" onclick="update('编辑','goodsController.do?update','goodsList')">编辑</a>
</div>
</div>
</div>
</div>

<script type="text/javascript">
<!--
$(function() {
var li_east = 0;
});
function addOrg() {
//alert("1122");
var id = "";
var rowsData = $('#goodsList').datagrid('getSelections');
if (rowsData.length == 1) {
id = rowsData[0].id;
}
var url = "goodsController.do?add&id=" + id;
add('录入', url, "goodsList");
}

//-->
</script>

4.添加商品的jsp页面goods.jsp

<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@include file="/context/mytags.jsp"%>
<!DOCTYPE html>
<html>
<head>
<title>商品信息</title>
<t:base type="jquery,easyui,tools"></t:base>
<script type="text/javascript">
$(function() {
$('#cc').combotree({
url : 'goodsController.do?setPFunction&selfId=${good.id}',
width: 155,
onSelect : function(node) {
// alert(node.text);
// changeOrgType();
}
});
})
/* function changeOrgType() { // 处理组织类型,不显示公司选择项
var orgTypeSelect = $("#orgType");
var optionNum = orgTypeSelect.get(0).options.length;
if(optionNum == 1) {
$("#orgType option:first").remove();
var bumen = '<option value="2" <c:if test="${orgType=='2'}">selected="selected"</c:if>><t:mutiLang langKey="common.goodment"/></option>';
var gangwei = '<option value="3" <c:if test="${orgType=='3'}">selected="selected"</c:if>><t:mutiLang langKey="common.position"/></option>';
orgTypeSelect.append(bumen).append(gangwei);
}
} */
</script>
</head>
<body style="overflow-y: hidden" scroll="no">
<t:formvalid formid="formobj" layout="div" dialog="true" action="goodsController.do?save">
<input id="id" name="id" type="hidden" value="${good.id }">
<fieldset class="step">

<div class="form">
<div class="form">
<label class="Validform_label"> 商品名称: </label>
<input name="goodsName" class="inputxt" value="${good.goodsName }">
<span class="Validform_checktip"></span>
</div>
<div class="form">
<label class="Validform_label"> 上级类目: </label>
<input id="cc" name="ggood.id" value="${good.ggood.id}">
</div>
<div class="form">
<label class="Validform_label"> 商品单价: </label>
<input name="goodsPrice" class="inputxt" value="${good.goodsPrice }">
</div>
<div class="form">
<label class="Validform_label"> 商品详情: </label>
<input name="goodsDetail" class="inputxt" value="${good.goodsDetail }">
</div>

<div class="form">
<label class="Validform_label"> 物料代码: </label>
<input name="goodsCode" class="inputxt" value="${good.goodsCode }">
</div>
<div class="form">
<label class="Validform_label"> 货号: </label>
<input name="goodsSpe" class="inputxt" value="${good.goodsSpe }">
</div>
<div class="form">
<label class="Validform_label"> 单位: </label>
<input name="goodsUnit" class="inputxt" value="${good.goodsUnit }">
</div>
<div class="form">
<label class="Validform_label"> 规格: </label>
<input name="goodsModel" class="inputxt" value="${good.goodsModel }">
</div>
<div class="form">
<label class="Validform_label"> 添加时间: </label>
<c:choose>
<c:when test="${empty good.id}">

<%-- <input name="addTime" class="inputxt" value="${addTime }"> --%>
<input class="Wdate" onClick="WdatePicker()" style="width: 150px" id="addTime" name="addTime" ignore="ignore"
value="<fmt:formatDate value='${addTime}' type="date" pattern="yyyy-MM-dd"/>">
</c:when>
<c:otherwise>
<input class="Wdate" onClick="WdatePicker()" style="width: 150px" id="addTime" name="addTime" ignore="ignore"
value="<fmt:formatDate value='${good.addTime}' type="date" pattern="yyyy-MM-dd"/>">
</c:otherwise>
</c:choose>
</fieldset>
</t:formvalid>
</body>
</html>

jeecg中树形显示的用法的更多相关文章

  1. WPF:使用Json.NET在TreeView中树形显示JSON数据

    原文 WPF:使用Json.NET在TreeView中树形显示JSON数据 据 读者可以参考这个开源的可以树形显示XML和JSON的工具: Mgen Object 603:XML/JSON树形显示小工 ...

  2. ztree树形图自定义图标在jeecg框架中不显示

    有时候工作遇到问题,就会硬着头皮去解决,今天给大家说一个ztree树形图自定义图标在jeecg框架中不显示的解决方法 对于这个问题,官方观法说法是在节点元素中加入icon的字段,然后后跟图标的url, ...

  3. 改造一下jeecg中的部门树

    假装有需求 关于 jeecg 提供的部门树,相信很多小伙伴都已经用过了,今天假装有那么一个需求 "部门树弹窗选择默认展开下级部门",带着这个需求再次去探索一下吧. 一.改造之前的部 ...

  4. [转帖]Linux杂谈: 树形显示多级目录--tree

    Linux杂谈: 树形显示多级目录--tree https://www.cnblogs.com/tp1226/p/8456539.html tree -L 最近写博客的时候偶尔会需要将文件目录结构直观 ...

  5. ecshop中foreach的详细用法归纳

    ec模版中foreach的常见用法. foreach 语法: 假如后台:$smarty->assign('test',$test); {foreach from=$test item=list ...

  6. JS里设定延时:js中SetInterval与setTimeout用法

     js中SetInterval与setTimeout用法 JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似.setTimeout 运用在延迟一段时间,再进行某项操 ...

  7. XCODE UITextField 中的属性和用法

    XCODE  UITextField  中的属性和用法 一些基本的用法 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedR ...

  8. .NET中的Timer类型用法详解

    这篇文章主要介绍了.NET中的Timer类型用法,较为详细的分析了Timer类型在各种环境下的用法,需要的朋友可以参考下   在.NET FrameWork中有多个Timer,那么怎么根据实际情况进行 ...

  9. Linux中yum和apt-get用法及区别

    Linux中yum和apt-get用法及区别   一般来说著名的linux系统基本上分两大类:   1.RedHat系列:Redhat.Centos.Fedora等   2.Debian系列:Debi ...

随机推荐

  1. Day14 js高级部分

    JS中文学习文档 http://jquery.cuishifeng.cn/ 一.函数变量的作用域: 变量的作用域是在声明时决定的而不是调用执行时决定 作用域链: 二.词法分析: 函数执行前,会进行预编 ...

  2. Windows 下配置Git

    在Windows上安装git很长时间了,一直都没有配置,就是简单的使用.当然配置后就可以在任意目录下使用git命令.其实就是配置下git的环境变量. 首先,当然下载windows版本:点我下载 安装直 ...

  3. 使用curl调试openstack的api

    一 系统环境 OpenStack: Mitaka 工具: 最简单的工具:restclient,本次使用curl 二 开搞 访问openstack的API之前,用户使用用户名和密码向keystone进行 ...

  4. [转载]各种java生成word解决方案的优缺点对比

    解决方案 优点 缺点 Jacob 功能强大 直接调用VBA接口,程序异常复杂:服务器必须是:windows系统+安装Office:服务器端自动化com接口容易产生死进程造成服务器宕机 Apache P ...

  5. VS2010制作安装程序

    转自(http://blog.csdn.net/wenmang1977/article/details/7733685) 序 前些天想写一下制作安装程序,由于要写的内容比较多,一拖再拖,不过坚持就是胜 ...

  6. Java 进阶6 异常处理的陷阱

    Java 进阶6 异常处理的陷阱 20131113 异常处理机制是 Java语言的特色之一,尤其是 Java的Checked 异常,更是体现了 Java语言的严谨性:没有完善的错误的代码根本就不会被执 ...

  7. C++中几个值得分析的小问题(2)

    下面有3个小问题,作为C++ Beginner你一定要知道错在哪里了. 1.派生类到基类的引用或指针转换一定“完美”存在? 一般情况,你很可能会认为:派生类对象的引用或指针转换为基类对象的引用或指针是 ...

  8. 状态保持: cookier及session简介

    状态保持 因为 http 是一种无状态协议,浏览器请求服务器是无状态的. 无状态:指一次用户请求时,浏览器.服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求. 无状态原因:浏览器与服务器是 ...

  9. Linux系统日志管理

    1.系统常用的日志(日志是用来记录重大事件的工具) /var/log/message      系统信息日志,包含错误信息等 /var/log/secure         系统登录日志 /var/l ...

  10. 解析xml节点属性及子节点内容

    xml样例 <microNearlyThreeYearsOverdueInfo subReportType="13204" subReportTypeCost="9 ...