首页 新闻 会员 周边

EXTjs 动态添加列的个数

0
悬赏园豆:120 [已解决问题] 解决于 2016-05-31 14:53

如题。从数据库中查询出一行行的字段(id,name,value,status,createDate),其中有三行是重复的数据(ID,status,createDate),其他的列是由数据库中name字段(假设里面存值为QQ,PHONE,EMAIL),我需要让name字段的数据显示在面板上(每个id不同,所以需要的name值不同),而name对应的数据是value的值。要怎么操作啊??

muycode的主页 muycode | 初学一级 | 园豆:82
提问于:2016-05-30 16:45
< >
分享
最佳答案
0

思路:

首先查出所有的字段,然后通过循环创建ExtJS列信息。

你把两个表结构发出来,可以帮你写个试试。

收获园豆:120
CodeHsu | 大侠五级 |园豆:5468 | 2016-05-30 21:01

@完颜泓瑾: 

看看这个

1 SELECT sortId,
2 MAX(CASE `key` WHEN 'qq' THEN `value` ELSE null END) qq,
3 MAX(CASE `key` WHEN 'phone' THEN `value` ELSE null END) phone,
4 MAX(CASE `key` WHEN 'email' THEN `value` ELSE null END) email,
5 MAX(CASE `key` WHEN 'sex' THEN `value` ELSE null END) sex,
6 createDate
7 FROM enroll GROUP BY sortId;

CodeHsu | 园豆:5468 (大侠五级) | 2016-05-30 23:06

@完颜泓瑾: 你后端使用的是什么开发的,可以在后端拼sql语句的

CodeHsu | 园豆:5468 (大侠五级) | 2016-05-30 23:39

@完颜泓瑾: 其实我是问你后端是什么语言开发的

这么跟你说吧,在后端先查出所有的列名

SELECT DISTINCT `KEY` FROM enroll;

然后,拼SQL语句,这样就可以动态查询。

 

ExtJs需要生成列,可以在后端写一个接口,返回所有列的名称集合,前端请求成功后,循环生成Extjs列

CodeHsu | 园豆:5468 (大侠五级) | 2016-05-30 23:54

@完颜泓瑾: OK

CodeHsu | 园豆:5468 (大侠五级) | 2016-05-30 23:57

@完颜泓瑾: 

这个方法可以动态加载列,我之前是通过点击查询来实现的,如果要是初始化的话可以放在初始化相关的事件中完成。

至于字段,你也可以使用类似的方法。

 1 function createColumn(col) {
 2     main_grid.headerCt.removeAll();
 3     var column = Ext.create('Ext.grid.RowNumberer', {
 4         //xtype: "rownumberer",
 5         align: 'left',
 6         menuDisabled: true,//显示菜单
 7         sortable: false,//排序
 8         width: 30
 9     });
10     main_grid.headerCt.add(column);
11 
12     for (var i = 0; i < col.length; i++) {
13         var column1 = Ext.create('Ext.grid.column.Column', {
14             header: "'" + col[i] + "'",
15             dataIndex: "'" + col[i] + "'",
16             align: 'center',
17             menuDisabled: true,//显示菜单
18             sortable: false,//排序
19             width: 70
20         });
21         main_grid.headerCt.add(column1);
22     }
23 
24     column = Ext.create('Ext.grid.column.Column', {
25         menuDisabled: true,//显示菜单
26         sortable: false,//排序
27         header: '结果',
28         dataIndex: 'Result',
29         align: 'center',
30         width: 60,
31         renderer: function (value, cellmeta) {
32             if (value == "0") {
33                 cellmeta.css = 'x-grid-column-red';
34                 return "NG";
35             }
36             else if (value == "1") {
37                 cellmeta.css = 'x-grid-column-green';
38                 return "OK";
39             }
40             else {
41                 return "";
42             }
43         }
44     });
45 
46     main_grid.headerCt.add(column);
47 
48     main_grid.getView().refresh();
49 }

希望对你有帮助。

CodeHsu | 园豆:5468 (大侠五级) | 2016-05-31 09:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册