`
xgs_1983
  • 浏览: 38902 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
社区版块
存档分类
最新评论

动态加载TreeGrid

    博客分类:
  • GWT
 
阅读更多

 学习一段时间GWT,想把我之前做的动态加载TreeList 总结一下

1 首先在GWT工程中要有一个Tree

 

      final TreeGrid treeGrid = new TreeGrid();
                EmployeeXmlDS employeesDS =        EmployeeXmlDS.getInstance();
		treeGrid.setWidth100();
		treeGrid.setHeight100();
		treeGrid.setDataSource(employeesDS);
		treeGrid.setAutoFetchData(true);
		treeGrid.setCanEdit(true);
		treeGrid.setCanAcceptDroppedRecords(true);
		TreeGridField nameField = new TreeGridField("name", 250);
		treeGrid.setFields(nameField);

建一个DataSource

 

 

import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.types.DSDataFormat;

public class EmployeeXmlDS extends DataSource {  
  
    private static EmployeeXmlDS instance = null;  
  
    public static EmployeeXmlDS getInstance() {  
        if (instance == null) {  
            instance = new EmployeeXmlDS("employeesDS");  
        }  
        return instance;  
    }  
  
    public EmployeeXmlDS(String id) {  
  
        setID(id);  
        setTitleField("name");
        setDataFormat(DSDataFormat.JSON);  
        DataSourceTextField nameField = new DataSourceTextField("name", "name", 128);  
        DataSourceTextField employeeIdField = new DataSourceTextField("treeId", "treeId",30);  
        employeeIdField.setPrimaryKey(true);  
        employeeIdField.setRequired(true);  
        DataSourceTextField reportsToField = new DataSourceTextField("upid","upid",50);  
        reportsToField.setRequired(true);  
        reportsToField.setForeignKey(id+".treeId");  
        reportsToField.setRootValue("root"); 
        setFields(nameField, employeeIdField, reportsToField);  
        setDataURL("/analysis/jsonStockData");//URL路径, web url-pattern
    }  
}  

 

 

3 建一个servlet 

 

 

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.framedsoa.core.util.DateUtil;
import com.framedsoa.dao.DictionaryDao;
import com.framedsoa.model.Dictionary;


@Service
@Transactional
public class JsonStockData extends HttpServlet {
	protected final Log log = LogFactory.getLog(getClass());
	@Autowired
	DictionaryDao dictionaryDao;	
	private static final long serialVersionUID = 1L;
	/**
	 * 动态加载
	 * 
	 */
	private DictionaryDao getDictionaryDao(){
		if(null==dictionaryDao){
		dictionaryDao=(DictionaryDao) getBean("dictionaryDaoJpa");
		}
		return dictionaryDao;
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String treeId=req.getParameter("treeId");
		String treeName=req.getParameter("name");
		String treeUpid=req.getParameter("upid");
		String param=req.getParameter("p");
		log.info("↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓");
		log.info("参数表 :treeId=" + treeId+",param= "+param+",treeName="+treeName+",treeUpid="+treeUpid);
		if("add".equals(param)){
			add(req,resp);
			return ;
		}
		
		if(treeId!=null && null==treeUpid && treeName ==null){
			remove(req,resp);
			return ;
		}
		if(null!=treeUpid&&treeId==null && treeName ==null){
			search(req,resp);
			return ;
		}
		
		if(treeId!=null && treeName!=null && null==treeUpid){
			edit(req,resp);
			return ;
		}
		
		if(treeId!=null && treeName!=null && null!=treeUpid){
			drag(req,resp);
			return ;
		}
		
	}
	
	protected Object getBean(String name) {
		WebApplicationContext applicationContext = WebApplicationContextUtils
				.getWebApplicationContext(getServletContext());
		if (applicationContext == null) {
			throw new IllegalStateException("No Spring web application context found");
		}
		if (!applicationContext.containsBean(name)) {
			{
				throw new IllegalArgumentException("Spring bean not found: " + name);
			}
		}
		return applicationContext.getBean(name);
	}
	@Transactional
	private void add(HttpServletRequest req, HttpServletResponse resp){
		PrintWriter out = null;
		String mgs = "添加成功";
		String treeId = "";
		String treeNo = req.getParameter("no");
		String treeName = req.getParameter("name");
		String treeUpid = req.getParameter("upid");
		String adddigorder = req.getParameter("digorder");
		
		try {
			resp.setCharacterEncoding("UTF-8");
			out = resp.getWriter();
			Dictionary bean = new Dictionary();
			bean.setNo(treeNo);
			bean.setName(treeName);
			bean.setUpid(treeUpid);
			bean.setDigorder(Long.valueOf(adddigorder));
			bean.setFcreateTime(DateUtil.getSysNowDate());
			bean.setFcreatorID("0");
			bean.setFstate("0");
			getDictionaryDao().save(bean);
			treeId =bean.getId();
		} catch (Exception e) {
			mgs="添加失败";
		} finally {
			out.println("[{");
			out.println("\"mgs\":\"" + mgs + "\",");
			out.println("\"treeId\":\"" + treeId + "\",");
			out.println("\"name\":\"" + treeName + "\",");
			out.println("\"upid\":\"" + treeUpid + "\",");
			out.println("\"no\":\"" + treeNo + "\"");
			out.println("}]");
			out.flush();
		}
	}
	
	@Transactional
	private void remove(HttpServletRequest req, HttpServletResponse resp){
		PrintWriter out = null;
		String mgs = "删除成功";
		String treeId="";
		String treeName="";
		String treeUpid="";
		try {
			resp.setCharacterEncoding("UTF-8");
			out = resp.getWriter();
			treeId=req.getParameter("treeId");
			log.info("删除:treeId=" + treeId);
			Dictionary bean = getDictionaryDao().get(treeId);
			bean.setFlastUpdateTime(DateUtil.getSysNowDate());
			bean.setFlastUpdateUserID("0");
			bean.setFstate("1");
			
			treeName=bean.getName();
			treeUpid=bean.getUpid();
			getDictionaryDao().save(bean);
		} catch (Exception e) {
			log.error("", e);
			mgs="删除失败";
		}finally{
			out.println("[{");
			out.println("\"mgs\":\""+mgs+"\",");
			out.println("\"treeId\":\"" + treeId + "\",");
			out.println("\"name\":\"" + treeName + "\",");
			out.println("\"upid\":\"" + treeUpid + "\"");
			out.println("}]");
			out.flush();
		}
		
	}
 	
	private void search(HttpServletRequest req, HttpServletResponse resp) {
		PrintWriter out = null;
		try {
			resp.setCharacterEncoding("UTF-8");
			out = resp.getWriter();

			String upid = req.getParameter("upid");
			upid = "root".equals(upid) ? "-11" : upid;
			log.info("查询:upid=" + upid );
			List<Dictionary> dicList = getDictionaryDao().getDictionaryByUpid(upid);
			if (null == dicList) {
				out.println("[]");
				out.flush();
				return;
			}
			
			out.println("[");
			int i = 0;
			int size = dicList.size();
			for (Dictionary bean : dicList) {
				String treeid = bean.getId();
				String treeName = bean.getName();
				String treeUpid = bean.getUpid();
				String treeNo = bean.getNo();
				out.println("{");
				out.println("\"treeId\":\"" + treeid + "\",");
				out.println("\"name\":\"" + treeName + "\",");
				out.println("\"upid\":\"" + treeUpid + "\",");
				out.println("\"no\":\"" + treeNo + "\"");
				if ((i++) != size - 1) {
					out.println("},");
				} else {
					out.println("}");
				}
			}
			out.println("]");
			out.flush();
		} catch (Exception e) {
			log.error("",e);
		}
	}
	@Transactional
	private void edit(HttpServletRequest req, HttpServletResponse resp) {
		PrintWriter out = null;
		try {
			resp.setCharacterEncoding("UTF-8");
			out = resp.getWriter();
			String treeId = req.getParameter("treeId");
			String treeName = req.getParameter("name");
			log.info("修改:treeId=" + treeId + ",treeName=" + treeName);
			Dictionary bean = getDictionaryDao().get(treeId);
			bean.setName(treeName);
			bean.setFlastUpdateTime(DateUtil.getSysNowDate());
			bean.setFlastUpdateUserID("0");
			getDictionaryDao().save(bean);

			out.println("[]");
			out.flush();
		} catch (Exception e) {
			log.error("", e);
		}
	}
	@Transactional
	private void drag(HttpServletRequest req, HttpServletResponse resp) {
		PrintWriter out = null;
		try {
			resp.setCharacterEncoding("UTF-8");
			out = resp.getWriter();
			String treeId = req.getParameter("treeId");
			String treeName = req.getParameter("name");
			String treeUpid = req.getParameter("upid");
			
			log.info("拖动:treeId="+treeId+", name="+treeName+",upid="+treeUpid);
			Dictionary bean = getDictionaryDao().get(treeId);

			bean.setUpid(treeUpid);
			bean.setFlastUpdateTime(DateUtil.getSysNowDate());
			bean.setFlastUpdateUserID("0");
			getDictionaryDao().save(bean);
			
			
			
		} catch (Exception e) {
			log.error("", e);
		} finally{
			out.println("[]");
			out.flush();
		}
	}
	
}

 

 


4 web.xml

 

<servlet>
    <servlet-name>jsonStockData</servlet-name>
    <servlet-class>com.hblb.app.server.services.JsonStockData</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>jsonStockData</servlet-name>
    <url-pattern>/analysis/jsonStockData</url-pattern>
  </servlet-mapping>

  5  增加记录

 

Record record = new Record();
			record.setAttribute("p", "add");
			record.setAttribute("treeId", idTextItem.getDisplayValue());
			record.setAttribute("no", noTextItem.getDisplayValue());
			record.setAttribute("name", nameTextItem.getDisplayValue());
			record.setAttribute("upid", upidTextItem.getDisplayValue());
			record.setAttribute("digorder", digorderTextItem.getDisplayValue());
			
			EmployeeXmlDS.getInstance().addData(record, new CbSave());

 

class CbSave implements DSCallback {

		@Override
		public void execute(DSResponse response, Object rawData,
				DSRequest request) {
			Record[] record =response.getData();
			String mgs =record[0].getAttribute("mgs");
			EmployeeXmlDS.getInstance().updateData(record[0]);
			SC.say(mgs);
			
		}
		
	}

 删除记录

 

 

  Record record = treeGrid.getSelectedRecord();
		if (record == null) {
			SC.say("请选择一条记录。");
			return;
		}
		String treedName = record.getAttribute("name");
		SC.confirm("删除对话框", "确定要删除" + treedName + "吗?", new ChRemove());

///////////////////////////
class ChRemove implements BooleanCallback {
		@Override
		public void execute(Boolean value) {
			if (value) {
				Record record = treeGrid.getSelectedRecord();
				EmployeeXmlDS.getInstance().removeData(record, new CbRemove());
			}
		}
	}

 修改,查询Grid自动处理

整理的比较粗造,希望能对大家有点有帮助.

 

 

 

分享到:
评论

相关推荐

    treegrid动态加载tree级联更新下拉列表动态计算数量乘以单价的和

    treegrid动态加载tree级联更新下拉列表,保存让下拉列表显示名称,不是id,和动态计算数量乘以单价的和,和总合计,添加一列删除一列,撤回,保存的合计。

    EasyUI的treegrid组件动态加载数据问题的解决办法

    最近涉及到treegrid组件的查询,需要根据查询条件动态更新EasyUI的treegrid组件的动态加载查询结果

    Ext.ux.tree.treegrid异步加载

    Ext.ux.tree.treegrid异步加载,点击节点加载数据

    Treegrid的动态加载实例代码

    主要介绍了Treegrid的动态加载实例代码的相关资料,需要的朋友可以参考下

    TreeGrid 在Asp.net中实现的实例

    TreeGrid 在Asp.net中实现的实例 TreeGrid ASP.net Javascript

    解决 easyui treegrid 批量展开和关闭卡顿问题。

    数据增加属性 state:closed, 即可默认收起,反之展开,需再展开时,将加载的data数据中的state属性变更,再重新执行 $('#tg').treegrid('loadData', data); 即可实现,亲测有效 无卡顿 注:无子项的请勿加state...

    TreeGrid控件及Demo源码

    支持Asp.net2.0,MS Ajax,Postback,CallBack(可用来加载子节点),Event(Select,Expend,Collaspe,RowCreate,RowDataBound,RowCommand),DataBind 使用方法与TreeView和GridView相似。 原理: 这个控件主要类与MS...

    treegrid大数据优化

    treegrid大数据优化,支持每个节点上秒显示上万条数据

    TreeGrid组件

    自定义TreeGrid 该组件实现的功能: 1.展示树列表,左边是树,右边是表 2.提供勾选框,可以通过接口获取选中数据 3.每个子列表都有自己的分页器 4.支持本地数据展示,和远程数据延迟加载 5.每个值可以有自身的转换...

    jquery.treegrid.extension.js

    扩展jquery.treegrid.extension.js,实现jquery-treegrid的懒加载,结合jquery.cookie.js来实现缓存,减缓页面大量数据加载

    treeGrid 树网格--样式

    treeGrid 树网格--样式

    TB.TreeGrid

    支持Asp.net2.0,MS Ajax,Postback,CallBack(可用来加载子节点),Event(Select,Expend,Collaspe,RowCreate,RowDataBound,RowCommand),DataBind 使用方法与TreeView和GridView相似。 ...

    MVC+EasyUITreeGrid懒加载示例

    MVC+EasyUITreeGrid懒加载示例,主要对EasyUI中TreeGrid组件的使用进行演示。对于正在学此组件的童鞋,不防花个几分钟看一下。本文主要演示:TreeGrid的简单应用、懒加载方法、控件数据格式。

    jquery.treegrid.async.js

    使用Bootstrap-table和JQuery TreeGrid插件展示树形表格,实现异步加载大数据量。

    javascript treegrid 2.0

    simpleHtmlTreeGrid 具备tree的特性,如折叠,无限目录,无限深度 具备datagrid的特性,如自定义列 支持 add row,drop row,...以及动态加载节点(lazyLoading) 除了tree列外,可定义任意格式列 目前已经支持拖拽列宽

    TB.TreeGrid(源码+demo)

    支持Asp.net2.0,MS Ajax,Postback,CallBack(可用来加载子节点),Event(Select,Expend,Collaspe,RowCreate,RowDataBound,RowCommand),DataBind 使用方法与TreeView和GridView相似。

    easyui从一个treegrid树形网格往另一个树形网格拖放数据

    下载easyui后使用其中的css和js,从一个treegrid树形网格资源 往另一个空的树形网格拖放数据,支持添加子节点、删除、编辑、保存、取消编辑、刷新、更新数据等功能

    TreeGrid-1.1

    树表展示,支持子节点分页,拖拽改变列宽,勾选,延迟加载等。在1.0的基础上改善了用户体验。

Global site tag (gtag.js) - Google Analytics