说明:它们是一对多的关系
例如:一个检查方案对应多个检查记录。
设计说明:也就是【方案管理】的列表界面上有一个【检查记录】按钮,点击【检查记录】按钮时,调出的是【日常检查】的列表界面,点击【日常检查】列表界面上的新增按钮,只能增加该检查方案【方案管理】所对应的【检查记录】,也就是说,所新增的【检查记录】是该【检查方案】的
a、(例如此按钮为【检查记录】)中的代码:
1 function(button, record, e) 2 { 3 var me = this; // this 为列表视图控制器 4 var viewModel = this.getViewModel(); // 获取视图模型 5 var grid = this.getView(); // 获取到列表视图 6 var records = grid.getSelectionModel().getSelection(); // 获取到选中的记录数组 7 var record=records[0]; // 如果是单选模式则获取到第1条选中的行记录 8 var dictName = record.get('FangAnMingChen'); // 获取选中行记录的UserName字段的值 9 var win = Ext.create('Ext.window.Window', { 10 title: '[ '+dictName+' ] 日常检查', 11 height: '60%', // 窗体高。示例为按父grid高的比例,也可直接指定数字作为高度,单位为:px 12 '60%', // 窗体宽。示例为按父grid宽的比例,也可直接指定数字作为宽度,单位为:px 13 closable: true, 14 layout: 'fit', 15 items: [{ 16 xtype: util.getCodeGenerate1ClassName('日常检查','list'), 17 title: null, 18 JianChaLeiBie:record.get('FangAnMingChen'), 19 store:{ 20 type: util.getCodeGenerate1ClassName('日常检查','store'), 21 //httpGetRequestExParams: { DictID: record.get('ID') } // 如使用本行代码将要求后台的方法中必须有参数DictID接收 22 httpGetRequestExParams: { // 如使用本行代码只要求后台的方法中有参数QueryCondition(默认生成的List()方法中就包含有该参数)即可接收多字段查询条件。建议使用本行代码 23 QueryCondition: { 24 JianChaLeiBie:{ 25 Value1: record.get('FangAnMingChen'), 26 CompareMode: '等于' // 比较模式:包含;等于;大于等于;等 27 } 28 } 29 } 30 } 31 }] 32 }); 33 grid.add(win); 34 win.showBy(grid); 35 36 }
b、需要在【检查记录】设计项的列表界面上的新增按钮中增加此代码
if(grid.QiYeID)
record.set('QiYeID',grid.QiYeID);
record.set('QiYeID',grid.QiYeID);
代码块如下:
1 function(button, e) 2 { 3 debugger; // 中断调试指令,可以手动删除它 4 5 var grid = this.getView(), // 获取到grid 6 record = Ext.create(util.getCodeGenerate1ClassName('日常检查','Model'),{ 7 // 此处放置新记录的字段的默认值 8 // 如:Descript: 'test' 则会使record记录中的Descript字段的值为'test' 9 }); // 创建新记录 10 if(grid.JianChaLeiBie) 11 record.set('JianChaLeiBie',grid.JianChaLeiBie); 12 else 13 record.set('JianChaLeiBie','日常检查'); 14 var win = Ext.create(util.getCodeGenerate1ClassName('日常检查','Edit'), { 15 viewModel: { 16 data: { 17 data: record // record记录的各字段值与win窗体中的各输入控件绑定 18 } 19 }, // win窗体的视图模型 20 title: '日常检查 <i class="fa fa-long-arrow-right"></i> 新增' // 窗体标题 21 }); // 创建win窗体 22 var loginUser = config.loginUser; 23 record.set('JianGuanRenYuan',loginUser.name); 24 record.set('JianGuanRenYuanID',loginUser.id); 25 record.set('IsGuiDang',false); 26 record.set('JianChaShiJian',new Date()); 27 grid.add(win); // 将win归入到grid管理 28 win.showBy(grid); //在grid中居中显示窗体 29 }
c、一个设计项调用另一个设计项代码的解释
1 2、代码设计 2 2 function(button, record, e) 3 3 { 4 4 var me = this; 5 5 // this 是函数的调用者,在这里是指列表界面中的维护按钮,并将其赋值给me这个变量 6 6 var viewModel = this.getViewModel(); 7 7 // ViewModel()是视图中放数据的地方,常用于编辑界面中存放选中的记录 8 8 // this.getViewModel()获取 9 9 var grid = this.getView(); 10 10 // 获取按钮所在的列表界面 11 11 var records = grid.getSelection(); 12 12 // 获取列表界面中选中的多条记录 13 13 var record=records[0]; 14 14 // 获取选中多条记录中的第1条行记录 15 15 var dictName = record.get('Name'); 16 16 // 获取选中行记录的字段的值Name 17 17 var codeGenerate = record.get('IsTree')==true?'词典条目维护(树形结构)':'词典条目维护'; 18 18 //这是三目运算符,问号前面是表达式,如果该表达式为真,则表达式的结果为b,如果表达式为假,则为c的结果。 19 19 如b = a>0?1:0; 20 20 如果a=1,则结果是b=1; 21 21 如果a=-1,则结果是b=0. 22 22 23 23 var win = Ext.create('Ext.window.Window', { 24 24 //Ext.create创建一个类的实例,Ext.window.Window'为类的名称 { }里面的内容为类的属性 25 25 title: '[ '+dictName+' ]词典条目维护', 26 26 height: '60%', //是指grid的60% 27 27 '60%', 28 28 closable: true, 29 29 hideHeaders: true, 30 30 layout: 'fit', 31 31 //用layout指定win的布局,fit的作用是让子元素充满父元素的空间 32 32 items: { 33 33 //子元素的属性,是指win里面的属性 34 34 xtype: util.getCodeGenerate1ClassName(codeGenerate,'list'), 35 35 //xtype为任意类型,util为工具的类库 36 36 设计项所包含的四种元素:1、列表界面 2、编辑界面 3、模型 4、store:从后台获取多条记录的数据 37 37 title: null, 38 38 ID: record.get('ID'), 39 39 store:Ext.create(util.getCodeGenerate1ClassName(codeGenerate,'Store'),{ 40 40 httpGetRequestExParams: { 41 41 // 如使用本行代码只要求后台的方法中有参数QueryCondition(默认生成的List()方法中就包含有该参数)即可接收多字段查询条件。建议使用本行代码 42 42 QueryCondition: { 43 43 DictID:{ 44 44 Value1: record.get('ID'), 45 45 CompareMode: 1 // 比较模式:0=>包含;1=>等于 46 46 } 47 47 } 48 48 } 49 49 }) 50 50 } 51 51 }); 52 52 grid.add(win); 53 53 //将win窗口归入到grid里面 54 54 grid.add(win)的作用 55 55 1、 避免切换选项卡时win窗口在浏览器界面上浮动 56 56 2、在使用win.up()是能找到grid 57 57 grid = win.up() win的上级就是grid 58 58 59 59 win.showBy(grid); 60 60 }