easy UI异步树的动态加载treegrid(实践记录)

JSP 页面

<%@ include file="/WEB-INF/pages/include/taglibs-include.jsp"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<%@ include file="/WEB-INF/pages/decorators/main-head-include.jsp"%>
<title></title>
<script type="text/javascript">
</script>
</head>
<body>
    <%@ include file="/WEB-INF/pages/decorators/main-body-include.jsp"%>
    <div id="main">
        <div id="mainWrapper">
            <!-- here is the button area -->
            
            <div class="spacer">
                <hr />
            </div>
            <div class="searchResult">
                <table  id="menuTree" title="<spring:message code='ruralcreditunioninstUnit.title.summary.search.rslt'/>">
                    <thead>
                        <tr class="trStyle">
                            <th data-options="field:'id',width:fixWidth(0.2),halign:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.instName" /></th>
                            <th data-options="field:'text',width:fixWidth(0.1),halign:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.instCode" /></th>
                            <th data-options="field:'pid',width:fixWidth(0.1),halign:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.instType" /></th>
                            <th data-options="field:'state',width:fixWidth(0.1),halign:'center',align:'center'"><spring:message code="ruralCreditUnionInstUnit.label.summary.grid.agentSalesFlag"/></th>
                        </tr>
                    </thead>
                </table>
            </div>
            <div class="spacer">
                <hr />
            </div>
        </div>
    </div>
<%@ include file="/WEB-INF/pages/instmgr/ruralcreditunioninstunit/js-ruralCreditUnionInstUnit-include.jsp" %>
<%@ include file="/WEB-INF/pages/decorators/main-foot-include.jsp"%>
</body>

</html>


<script type="text/javascript">
if ($('#menuTree').length > 0) {

$('#menuTree').treegrid({
        url:"queryRuralCreditUnionInstUnitDataGrid1.do",
        onBeforeExpand:function(node,data){  
            if (node) {
                var url1 ="<c:url value='/operation/instmgr/queryRuralCreditUnionInstUnitDataGrid1.do'/>?pid=" + node.id;
                $('#menuTree').treegrid('options').url = url1;
            }
        },  
        idField:'id',   
        treeField:'id',   
        animate:true,
        lines:true,
        rownumbers:true,
        showHeader:true,
        height:'auto',
        width:'auto',
        autoRowHeight:true,
        autoRowWidth:true,
        fitColumns:true,
        loadMsg: '<spring:message code="pagination.label.loadMsg" />',
        onLoadSuccess: function(data){
            $('#menuTree').treegrid('collapseAll');
        }
    });

}  
function fixWidth(percent)
{
    return document.body.clientWidth * percent ;
}
</script>



java代码


    @RequestMapping("/queryRuralCreditUnionInstUnitDataGrid1")
    @ResponseBody
    public String ajaxGetModuleJson(String pid)
    {
        return getModuleJsonData(pid);
    }

    public String getModuleJsonData(String pid)
    {
        StringBuffer jsonBuffer = new StringBuffer();
        TMenuExample tMenuExample = new TMenuExample();
        TMenuExample.Criteria criteria = tMenuExample.createCriteria();
        if (StringUtils.isEmpty(pid))
        {
            criteria.andPidIsNull();
        }
        else
        {
            criteria.andPidEqualTo(pid);

        }
        // 获取根节点
        List<TMenu> rootModuleList = tMenuMapper.selectByExample(tMenuExample);
        jsonBuffer.append("[");
        for (int i = 0; i < rootModuleList.size(); i++)
        {
            // 获取字节点(菜单&按钮)
            getChiledrenMdlList(rootModuleList.get(i), jsonBuffer, i > 0);
        }
        jsonBuffer.append("]");
        return jsonBuffer.toString();
    }

    private void getChiledrenMdlList(TMenu parentModule, StringBuffer jsonBuffer, boolean isNotFirst)
    {
        if (isNotFirst)
        {
            jsonBuffer.append(",");
        }
        jsonBuffer.append("{");
        String entityId = parentModule.getId();
        TMenuExample example = new TMenuExample();
        TMenuExample.Criteria criteria = example.createCriteria();
        criteria.andPidEqualTo(entityId);
        List<TMenu> moduleList = tMenuMapper.selectByExample(example);
        jsonBuffer.append("\"id\":\"").append(entityId).append("\",");
        String pid = parentModule.getPid();
        Boolean hasChildren = moduleList.size() > 0;
        jsonBuffer.append("\"pid\":\"").append(pid != null ? pid : "-1").append("\",");
        jsonBuffer.append("\"hasChildren\":\"").append(hasChildren).append("\",");
        jsonBuffer.append("\"state\":\"").append(parentModule.getState()).append("\",");
        jsonBuffer.append("\"text\": \"").append(EncodeHelper.encodeHtml(parentModule.getText())).append("\"");
        // if (hasChildren)
        // {
        //
        // jsonBuffer.append("\"children\":[");
        // for (int i = 0; i < moduleList.size(); i++)
        // {
        // this.getChiledrenMdlList(moduleList.get(i), jsonBuffer, i > 0);
        // }
        // jsonBuffer.append("]");
        //
        // }
        // else
        // {
        //
        // jsonBuffer.append("\"children\":[]");
        // }
        jsonBuffer.append("}");
    }


数据库相关代码:

TMenu



import java.util.List;

import cn.com.gevent.bfip.entity.Entity;

public class TMenu extends Entity
{
    private String id;

    private String pid;

    private String text;

    private String iconcls;

    private String url;

    private String state;

    private List<TMenu> children;

    public String getId()
    {
        return id;
    }

    public void setId(String id)
    {
        this.id = id == null ? null : id.trim();
    }

    public String getPid()
    {
        return pid;
    }

    public void setPid(String pid)
    {
        this.pid = pid == null ? null : pid.trim();
    }

    public String getText()
    {
        return text;
    }

    public void setText(String text)
    {
        this.text = text == null ? null : text.trim();
    }

    public String getIconcls()
    {
        return iconcls;
    }

    public void setIconcls(String iconcls)
    {
        this.iconcls = iconcls == null ? null : iconcls.trim();
    }

    public String getUrl()
    {
        return url;
    }

    public void setUrl(String url)
    {
        this.url = url == null ? null : url.trim();
    }

    public List<TMenu> getChildren()
    {
        return children;
    }

    public void setChildren(List<TMenu> children)
    {
        this.children = children;
    }

    public String getState()
    {
        return state;
    }

    public void setState(String state)
    {
        this.state = state;
    }

}


SQL文

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.com.gevent.bfip.dataaccess.dao.mapper.syscfg.TMenuMapper" >
  <resultMap id="BaseResultMap" type="cn.com.gevent.bfip.entity.model.syscfg.TMenu" >
    <result column="id" property="id" jdbcType="VARCHAR" />
    <result column="pid" property="pid" jdbcType="VARCHAR" />
    <result column="text" property="text" jdbcType="VARCHAR" />
    <result column="iconCls" property="iconcls" jdbcType="VARCHAR" />
    <result column="url" property="url" jdbcType="VARCHAR" />
    <result column="state" property="state" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Example_Where_Clause" >
    <where >
      <foreach collection="oredCriteria" item="criteria" separator="or" >
        <if test="criteria.valid" >
          <trim prefix="(" suffix=")" prefixOverrides="and" >
            <foreach collection="criteria.criteria" item="criterion" >
              <choose >
                <when test="criterion.noValue" >
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue" >
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue" >
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue" >
                  and ${criterion.condition}
                  <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
      <if test="oredCriteria == null or oredCriteria.size() == 0" >
        <![CDATA[ FLAG_DELETED <> 'Y' ]]>
      </if>
      <if test="oredCriteria != null and oredCriteria.size() > 0" >
        <![CDATA[ AND FLAG_DELETED <> 'Y' ]]>
      </if>
    </where>
  </sql>
  <sql id="Update_By_Example_Where_Clause" >
    <where >
      <foreach collection="example.oredCriteria" item="criteria" separator="or" >
        <if test="criteria.valid" >
          <trim prefix="(" suffix=")" prefixOverrides="and" >
            <foreach collection="criteria.criteria" item="criterion" >
              <choose >
                <when test="criterion.noValue" >
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue" >
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue" >
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue" >
                  and ${criterion.condition}
                  <foreach collection="criterion.value" item="listItem" open="(" close=")" separator="," >
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
      <if test="example == null or example.oredCriteria == null or example.oredCriteria.size() == 0" >
        <![CDATA[ FLAG_DELETED <> 'Y' ]]>
      </if>
      <if test="example != null and example.oredCriteria != null and example.oredCriteria.size() > 0" >
        <![CDATA[ AND FLAG_DELETED <> 'Y' ]]>
      </if>
    </where>
  </sql>
  <sql id="Base_Column_List" >
    id, pid, text, iconCls, url,state
  </sql>
  <select id="selectByExample" resultMap="BaseResultMap" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenuExample" >
    select
    <if test="distinct" >
      distinct
    </if>
    <include refid="Base_Column_List" />
    from t_menu
    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
    <if test="endRecordNum > 0" >
      limit ${startRecordNum},${numberOfRecordsToSelect}
    </if>
  </select>
  <delete id="deleteByExample" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenuExample" >
    delete from t_menu
    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
  </delete>
  <insert id="insert" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenu" >
    insert into t_menu (id, pid, text,
      iconCls, url)
    values (#{id,jdbcType=VARCHAR}, #{pid,jdbcType=VARCHAR}, #{text,jdbcType=VARCHAR},
      #{iconcls,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR})
  </insert>
  <insert id="insertSelective" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenu" >
    insert into t_menu
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        id,
      </if>
      <if test="pid != null" >
        pid,
      </if>
      <if test="text != null" >
        text,
      </if>
      <if test="iconcls != null" >
        iconCls,
      </if>
      <if test="url != null" >
        url,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="id != null" >
        #{id,jdbcType=VARCHAR},
      </if>
      <if test="pid != null" >
        #{pid,jdbcType=VARCHAR},
      </if>
      <if test="text != null" >
        #{text,jdbcType=VARCHAR},
      </if>
      <if test="iconcls != null" >
        #{iconcls,jdbcType=VARCHAR},
      </if>
      <if test="url != null" >
        #{url,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <select id="countByExample" parameterType="cn.com.gevent.bfip.entity.model.syscfg.TMenuExample" resultType="java.lang.Integer" >
    select count(*) from t_menu
    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
  </select>
  <update id="updateByExampleSelective" parameterType="map" >
    update t_menu
    <set >
      <if test="record.id != null" >
        id = #{record.id,jdbcType=VARCHAR},
      </if>
      <if test="record.pid != null" >
        pid = #{record.pid,jdbcType=VARCHAR},
      </if>
      <if test="record.text != null" >
        text = #{record.text,jdbcType=VARCHAR},
      </if>
      <if test="record.iconcls != null" >
        iconCls = #{record.iconcls,jdbcType=VARCHAR},
      </if>
      <if test="record.url != null" >
        url = #{record.url,jdbcType=VARCHAR},
      </if>
    </set>
    <if test="_parameter != null" >
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
  <update id="updateByExample" parameterType="map" >
    update t_menu
    set id = #{record.id,jdbcType=VARCHAR},
      pid = #{record.pid,jdbcType=VARCHAR},
      text = #{record.text,jdbcType=VARCHAR},
      iconCls = #{record.iconcls,jdbcType=VARCHAR},
      url = #{record.url,jdbcType=VARCHAR}
    <if test="_parameter != null" >
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
</mapper>

猜你喜欢

转载自blog.csdn.net/vs0layer/article/details/53183488
今日推荐