`
xgs_1983
  • 浏览: 39561 次
  • 性别: 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自动处理

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

 

 

 

分享到:
评论

相关推荐

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

    通过以上步骤,我们可以实现EasyUI TreeGrid组件根据查询条件动态加载数据的功能。这种方式避免了对`treegrid('reload')`方法的直接依赖,同时也符合异步数据处理的最佳实践。在实际开发中,根据项目需求,你可能还...

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

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

    treegrid.zip_treeGrid wpf_treegrid_treegrid wpf c#_wpf 树状表格_wpf树

    TreeGrid是WPF中的一个高级控件,它结合了树视图(TreeView)和数据网格(DataGrid)的功能,使得我们可以展示层次结构的数据,并且能够对这些数据进行编辑、排序和筛选。我们将基于“treegrid.zip”这个压缩包中的...

    TreeGrid 在Asp.net中实现的实例

    在ASP.NET页面中,我们可以通过AJAX异步加载数据,使用JavaScript处理动态添加、删除和编辑节点。例如,使用jQuery UI的`nestedSortable`插件可以创建可排序的树形表格。 实现步骤: 1. **设计HTML和服务器端控件*...

    Ext.ux.tree.treegrid异步加载

    `TreeGrid`的一个重要特性是支持异步加载数据。这意味着当用户展开某个节点时,该节点下的子节点才会被请求并加载到界面上。这种方式能够显著提高应用的性能和响应速度,特别是在处理大量数据时更为明显。 #### 三...

    treegrid_barku4k_treegrid_jqueryajax_

    在TreeGrid中,AJAX通常用于从服务器动态获取数据,当用户展开节点时,仅加载必要的子数据,而不是一次性加载整个数据集。这种按需加载的方式可以显著提高页面性能,尤其是处理大数据集时。 在提供的文件列表中,...

    bootstrap-treeview树节点实现动态加载(懒加载)

    这意味着当用户首次访问树形视图时,只会加载根节点,当用户展开某个节点时,该节点的子节点才会在后台请求数据并动态添加到视图中。这样,即使树结构包含数千个节点,也不会对初始页面加载时间造成太大影响。 实现...

    treegrid大数据优化

    2. 懒加载策略:TreeGrid中的懒加载是指在用户展开节点时才加载该节点下的子数据,而不是一次性加载所有数据。这样可以避免初次加载时的数据量过大,提高初始渲染速度。当用户滚动或展开新节点时,后台动态获取并...

    基于layui的树表格-treeGrid

    - 数据加载:可以通过异步请求或直接传入数据来填充TreeGrid。异步请求时,通常采用layui的layData方法配合layui的API进行数据获取和渲染。 4. TreeGrid主要属性和方法: - id:TreeGrid的容器ID,用于指定表格...

    Treegrid的动态加载实例代码

    在动态加载的场景下,Treegrid可以从服务器获取数据并在用户滚动或展开节点时按需加载,从而提高页面性能和用户体验。 在提供的代码示例中,我们看到Treegrid的配置和使用方法。首先,通过jQuery的$(function() {})...

    很实用的treegrid

    这种组件能够动态加载子级节点,即当用户展开某个父节点时,才会请求服务器获取并显示该父节点下的子节点数据,以提高页面加载速度和用户体验。 "很实用的treegrid"标题表明这是一个在实际应用中表现出色的TreeGrid...

    Extjs treeGrid 本地数据 例子

    TreeStore是ExtJS中的一个数据存储类,它负责加载和管理树形数据。你需要定义数据模型(Model),包含节点的属性,以及数据源(store configuration),这可以是JSON对象数组或者其他格式的数据。例如: ```...

    easyui的Treegrid扩展

    这意味着数据可以从服务器获取,也可以通过本地JSON文件如`treedata.json`动态加载。这种方式的优点是数据更新实时性强,可以轻松应对大规模、实时变化的数据。同时,数据结构的定义也更加清晰,便于后台处理和前端...

    数据结构之easyui-treegrid

    3. 动态加载:当数据量较大时,TreeGrid支持懒加载,即只在需要时才请求并加载子节点。这通常通过配置`onBeforeOpen`事件来实现,当用户展开一个节点时,该事件会被触发,此时可以异步获取子节点数据并添加到...

    GridView+Jquery实现的TreeGrid

    总的来说,"GridView+Jquery实现的TreeGrid"是一个结合了前后端技术,实现高效、动态的数据展示的实例。它利用了GridView的表格布局和JQuery的灵活性,提供了用户友好的树状数据浏览体验。在实际项目中,可以根据...

    TreeGrid.js 表格树插件

    4. **数据绑定**:TreeGrid.js可以轻松地与各种数据源(如JSON、XML或AJAX)结合,动态加载和更新表格内容。用户只需配置数据源的URL和格式,插件会自动处理数据解析和渲染。 5. **排序功能**:用户可以对表格中的...

    dhtmlxTreeGrid

    2. **数据绑定**:该组件支持多种数据源,包括JSON、XML、CSV等格式,可以通过Ajax方式动态加载数据,也可以一次性加载所有数据。这使得dhtmlxTreeGrid能够灵活处理各种规模的数据集。 3. **功能丰富**:除了基本的...

    boostrapTable Treegrid树表格

    在实际项目中,根据需求可以调整Treegrid的样式,定制图标以表示展开和折叠状态,也可以通过JavaScript进行交互逻辑的增强,如懒加载子级数据以优化性能。总之,BootstrapTable Treegrid是一个强大且灵活的工具,它...

    dhtmlxTreeGrid1.2_Pro

    2. **数据绑定**:dhtmlxTreeGrid支持从XML、JSON等数据源动态加载和绑定数据,这使得它能适应各种后端数据库和数据格式。 3. **可定制性**:用户可以通过CSS自定义组件的外观,通过JavaScript调整其行为,以满足...

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

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

Global site tag (gtag.js) - Google Analytics