普元EOS实现CellEdit编辑和一些理解

1.celledit,是不需要重新弹出页面,直接在当前页面进行编辑。在miniui的api中有明确的demo示例。


其实,复制demo过来就可以看到效果了,不过要注意的一点是,必须连同js,jq全部复制过来,切记不可复制一部分,那样你会发现就是与demo效果不一样,这也是LZ踩过的坑。

2.celledit实现页面自定义显示值

说实话,我刚开始弄了半天都没头绪,包括给id后再jq里面塞值,直接再input里面给value,可惜的是统统没有效果,最后发现还是要从demo里面入手,关键代码就是这两句。

 var newRow = { name: "New Row",'start_performance':0 ,'sort_id':1};
			            grid.addRow(newRow, 0);
			            grid.beginEditCell(newRow, "LoginName");

可以看到,和官网上面不同的是我在第一行给定了两个值,这样就可以搞定页面显示值的问题,不过有一点LZ没有搞懂的是,第一个name的作用在哪里,希望有大神可以指教哟。

接下来就是获取当前添加行的数据进行添加,以前我都是直接sql语句,这一次用实体类进行添加。首先是构件


记住传进来参数为entity,那么前端传值就需要叫这么一个名字了,之后定义相应的事务处理机制,最后定义相应的service和其实现类。

public String[] addCustomerPlatform(DataObject obj) {
		String[] reCode = new String[2];
        reCode[0] = "0";
        reCode[1] = "保存成功";
        DataObject[] datas2 = getDASTemplate().queryByNamedSql(DataObject.class,"", null);
		
        //拿到数据实体
        DataObject PaCustomGradient =  DataObjectUtil.createDataObject("");
        getDASTemplate().getPrimaryKey(PaCustomGradient);
        int sortId = PaCustomGradient.getInt("sort_id");
        String gradientType = PaCustomGradient.getString("gradient_type");
        PaCustomGradient.set("sortId",obj.getString("sort_id"));
        //平台客户编号是0
        PaCustomGradient.set("gradientType","0");
        PaCustomGradient.set("startPerformance", obj.getString("start_performance"));
        PaCustomGradient.set("endPerformance", obj.getString("end_performance"));
        PaCustomGradient.set("ratio", obj.getString("ratio"));
        PaCustomGradient.set("remark", obj.getString("remark"));
        SimpleDateFormat sdateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String createDate = sdateformat.format(new Date());
        PaCustomGradient.set("createdBy", "admin");
        PaCustomGradient.set("createdTime", new Date());
       /* Map<String, String> maps = new HashMap<String, String>();
        maps.put("", value)*/
        getDASTemplate().saveEntity(PaCustomGradient);
        return reCode;
	}

通过和实体构建关系从而添加数据到数据库中。和直接sql进行添加的话,我感觉这样的好处是可以规避不必要的风险,大家觉得呢?

4.树形图前端自定义根节点


由于数据库的关系,需要再service里面自定义相应的根节点,通过类型转换得到。

DataObject root = DataObjectUtil.createDataObject("commonj.sdo.DataObject");
		//{custom_name: "公司结构",nodeType: "Root", isLeaf: false, expanded: true};
		root.set("company", "公司结构");
		root.set("re_custom_no", null);
		root.set("custom_no", "Root");
		root.set("nodeType", "Root");
		/*root.set("isLeaf", false);
		root.set("expanded", false);*/
		List<DataObject> list = new ArrayList<DataObject>();
		list.add(root);
		for(int i=0; i<datas.length; i++){
			DataObject temp = datas[i];
			/*temp.set("nodeType", "dept");
			tem
			
			p.set("isLeaf", false);
			root.set("expanded", false);*/
			if(StringUtils.isEmpty( temp.getString("re_custom_no"))){
				temp.set("re_custom_no", "Root");
			}
			list.add(temp);
		}
		return list.toArray(new DataObject[list.size()]);

前端页面通过定义相应的事件进行获取即可。

function onBeforeTreeLoad(e) {
	    	e.url = "com.mj.flx.pa.service.queryCustomerRel.queryCustomerRelTree.biz.ext";
	    	// 增加nodeType参数以便区分是加载机构下的结点还是岗位下的结点
			e.params.nodeType = e.node.nodeType;
	    }
var rootNode = {company: "公司结构",nodeType: "Root", isLeaf: false, expanded: true};

5.批量操作。

时隔几个月,再一次上手EOS+miniui,经历了两天的不适应,到逐渐熟悉到慢慢理解,以前是很反感这个开发工具,现在是逐渐理解这个工具为什么要这么用,感觉真正的理解了以后,技术上面的问题的障碍将大大减少。针对这一次的批量操作,我觉得没有理解这个工具应该会很吃力,其实关键就是要吃透构件这个逻辑组件是干什么用的。

var datas = grid.getSelecteds();
	    	if(datas==null||datas.length<=0){
	    		nui.alert('请至少选择一条数据');
	    		return ;
	    	}
	    	//var custom_no = datas[0].custom_no;
	    	//var re_custom_no = datass;
	    	 $.ajax({ 
    	     url:".biz.ext",
    	     type: 'POST',
		     //data: nui.encode({params:{arr:arr,custom_no:custom_no,re_custom_no:re_custom_no}}),
		     data: nui.encode({params:datas,par:datass}),
		     cache: false,
		     contentType:'text/json',

可以看到我传的值总共有两个,但是他们的类型是不同的,再来看构件。


红框显示的是页面选中的多条数据,后面的只是我业务需求中的要求,可以忽略。

public void addCustomerRelation(DataObject[] params,String par) {
		System.out.println(params.length);
		System.out.println(par);
		for(int i = 0; i < params.length; i++) {
			DataObject dataObject = params[i];
			Map<String, Object> map = new HashMap<String, Object>();
			map.put("custom_no", dataObject.get("custom_no"));
			map.put("re_custom_no", par);
			getDASTemplate().executeNamedSql("",map);	
		}
	}

普通的map数组在这里是解析不了的,估计是因为普元EOS自身的封装的原因,所以必须要用自带的DataObject进行装载,循环读取,最终循环执行相应的sql语句即可。

6.个人体会

普元EOS的实现过程就是前端页面--》构建--》beans.xml--》service --》impl --》dao--》实体

数据交互的方式为:前端组装好相应的数据格式进行请求,后端接收解析后数据进行相应的操作后组装数据,根据相应的需求决定是否返回数据。实在话,这次回头看,收获挺大。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值