读书人

Extjs处置级联数据的统一保存

发布时间: 2013-01-21 10:15:39 作者: rapoo

Extjs处理级联数据的统一保存

原始需求:

1)有一个两级级联的表格:分组与规则,一个分组下可以有多个规则;

2)保存时要统一保存,也就是不能添加一个分组或规则就保存一下,而要到最后点击保存按钮时,把本次所有的修改一次性的提交了。

分析:

1) 保存时分组与规则必须关联起来。否则,如果新加两个或多个分组时,新加分组下的规则,因新加分组都没有Id,这些规则会没有办法区分自己属于哪个分组。如新增分组:[{id:’’,name:’分组1’},{id:’’,name:’分组2’}],它们下级的规则就无法通过分组id区分分组。

2) 为了解决上面新加多个分组时,区分规则与分组的对应,我把规则直接处理分组的下一级进行提交。再后台解析时,因规则直接与分组对应,也不会造成分组与规则的对应混乱。

实现:

Js关键代码:

// 报警分组JSONArray jsonAlarmGroups = JSONArray.fromObject(jsonAlarm.getString(1));for(int i=0;i<jsonAlarmGroups.size();i++){JSONArray jaAlarmGroup = JSONArray.fromObject(jsonAlarmGroups.get(i));String alarmGroupId = jaAlarmGroup.getString(0);AlarmGroup alarmGroup = alarmGroupDomainService.getAlarmGroup(alarmGroupId);boolean isNew = false;if(alarmGroup==null){alarmGroup = new AlarmGroup();isNew = true;}alarmGroup.setName(jaAlarmGroup.getString(1));alarmGroup.setFtype(queryType);alarmGroup.setListQuery(query);alarmGroup.setSubject(subject);if(isNew)alarmGroupDomainService.addAlarmGroup(alarmGroup);elsealarmGroupDomainService.editAlarmGroup(alarmGroup);// 报警规则,规则在分组下,处理起来很简单JSONArray jaAlarmFormulas = JSONArray.fromObject( jaAlarmGroup.getString(3));for(int m = 0;m<jaAlarmFormulas.size();m++){JSONArray jaAlarmFormula = JSONArray.fromObject( jaAlarmFormulas.getString(m));String alarmFormlulaId = jaAlarmFormula.getString(0); AlarmFormulas formula = alarmDomainService.getAlarmFormulaByAlarmId(alarmFormlulaId);if(formula == null){formula = new AlarmFormulas();//formula.setId(alarmFormlulaId);}formula.setName(jaAlarmFormula.getString(1).replaceFirst("^null$", ""));formula.setContent(jaAlarmFormula.getString(2).replaceFirst("^null$", ""));formula.setAlarmGroup(alarmGroup);formula.setBackground(jaAlarmFormula.getString(3).replaceFirst("^null$", ""));formula.setForeground(jaAlarmFormula.getString(4).replaceFirst("^null$", ""));formula.setSerial(jaAlarmFormula.getInt(5));formula.setIsvalid(jaAlarmFormula.getBoolean(6));formula.setAlarmMode(AlarmModeType.valueOf(jaAlarmFormula.getString(7)));formula.setAlarmColumn(jaAlarmFormula.getString(8).replaceFirst("^null$", ""));alarmDomainService.saveOrUpdateAlarmFormula(formula);}}

说明:

1) 我这里前台js是使用Ext的grid进行级联;

2) 需求总共只有两级级联;

3) 简单起见,这里没有加规则验证逻辑;



读书人网 >JavaScript

热点推荐