一个设计项上的按钮调另一个设计项的列表界面,同时加筛选条件

说明:它们是一对多的关系

例如:一个检查方案对应多个检查记录。

设计说明:也就是【方案管理】的列表界面上有一个【检查记录】按钮,点击【检查记录】按钮时,调出的是【日常检查】的列表界面,点击【日常检查】列表界面上的新增按钮,只能增加该检查方案【方案管理】所对应的【检查记录】,也就是说,所新增的【检查记录】是该【检查方案】的

 

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         width: '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);
代码块如下:
 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         width: '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 }

 

 

posted on 2018-10-17 11:29  叫我谣叔  阅读(412)  评论(0编辑  收藏  举报