miniui Treegrid的简单实现

来源:互联网 发布:淘宝返利怎么怎么查看 编辑:程序博客网 时间:2024/04/27 15:33
前台jsp:


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
 <title>PagerTree 树形分页表格</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
   <script src="assets/js/jquery.min.js" type="text/javascript"></script>
<!--MiniUI-->
<link href="assets/css/demo.css" rel="stylesheet" type="text/css" />
<script src="assets/js/scripts/boot.js" type="text/javascript"></script>
<link href="assets/js/scripts/miniui/themes/blue/skin.css" rel="stylesheet" type="text/css" />
</head>
<body>
  <h1>CellEdit 单元格编辑</h1>
    
<div id="treegrid1" class="mini-treegrid" style="width:700px;height:280px;"     
    url="menu.do" showTreeIcon="true" 
    treeColumn="taskname" idField="uid" parentField="puid" resultAsTree="false"  
    allowResize="true" expandOnLoad="true"
    allowCellEdit="true" allowCellSelect="true"  frozenStartColumn="0" frozenEndColumn="1" >
    <div property="columns">
        <div type="indexcolumn"></div>
        <div name="taskname" field="name" width="160" >任务名称
            <input property="editor" class="mini-textbox" style="width:100%;" />
        </div>
        <div field="url" width="80">进度
            <input property="editor" class="mini-textbox" style="width:100%;"/>
        </div>
                                 
    </div>
</div>
</body>
</html>


实体类pojo(uid和puid为父子关系的属性,可自己定义,需要与前台的idField和parentField两个字段对应)

package com.iflytek.domain;

public class Menu1 {
private String uid;
private String name;
private String puid;
private String url;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPuid() {
return puid;
}
public void setPuid(String puid) {
this.puid = puid;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
@Override
public String toString() {
return "Menu1 [uid=" + uid + ", name=" + name + ", puid=" + puid + ", url=" + url + "]";
}

}


后台servlet

package com.iflytek.controller.page;

import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.hibernate.Session;
import com.alibaba.fastjson.JSON;
import com.iflytek.domain.Menu;
import com.iflytek.domain.Menu1;
import com.iflytek.util.HibernateUtil;

import oracle.net.aso.f;

/**
 * Servlet implementation class MenuController
 */
@WebServlet("/menu.do")
public class MenuController extends HttpServlet {
private static final long serialVersionUID = 1L;


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/jsp/menu.jsp").forward(request, response);
}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");

List<Menu1> allmenu=new ArrayList<>();
List<Menu1> fmenu=new ArrayList<>();
Session session = HibernateUtil.getSessionFactory().openSession();
String sql="select m.menuid,m.mname,m.mpid,m.murl from t_menu m order by m.menuid asc";
List menus = session.createSQLQuery(sql).list();
for(int i=0;i<menus.size();i++){
Object[] b=(Object[])menus.get(i);
Menu1 menu=new Menu1();
BigDecimal a=(BigDecimal) b[0];
int id=a.intValue();
menu.setUid(String.valueOf(id));
menu.setName((String)b[1]);
menu.setUrl((String)b[3]);
if(Integer.parseInt((String)b[2])==0){
menu.setPuid(String.valueOf(-1));
fmenu.add(menu);
}else{
menu.setPuid((String)b[2]);
fmenu.add(menu);
}

}
List<Menu1> menu3=new ArrayList<>();
for(int i=0;i<fmenu.size();i++){
menu3.add(fmenu.get(i));
String id=fmenu.get(i).getUid();
for(int j=0;j<allmenu.size();j++){
if(allmenu.get(j).getPuid().equals(id)){
menu3.add(allmenu.get(j));
}
}
}

for(Menu1 m:menu3){
System.out.println(m);
}

response.getWriter().write(JSON.toJSONString(menu3,true));
}

}


由于以上的servlet在获得结果集的时候没有按照所有pid等于id的结果排序,所以显示的结果只会有两层,不会存在更多层父子孩子节点的关系。


数据库截图




最终效果图