jeecg中树形显示的用法

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}',
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=" 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=" 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>

原文地址:https://www.cnblogs.com/xujiating/p/6374567.html