首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

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

2013-01-21 
Extjs处理级联数据的统一保存原始需求:1)有一个两级级联的表:分组与规则,一个分组下可以有多个规则;2)保存

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)      简单起见,这里没有加规则验证逻辑;



热点排行