动态加载TreeGrid

 学习一段时间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);

2 建一个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自动处理

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

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值