如题。从数据库中查询出一行行的字段(id,name,value,status,createDate),其中有三行是重复的数据(ID,status,createDate),其他的列是由数据库中name字段(假设里面存值为QQ,PHONE,EMAIL),我需要让name字段的数据显示在面板上(每个id不同,所以需要的name值不同),而name对应的数据是value的值。要怎么操作啊??
思路:
首先查出所有的字段,然后通过循环创建ExtJS列信息。
你把两个表结构发出来,可以帮你写个试试。
@完颜泓瑾:
看看这个
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;
@完颜泓瑾: 你后端使用的是什么开发的,可以在后端拼sql语句的
@完颜泓瑾: 其实我是问你后端是什么语言开发的
这么跟你说吧,在后端先查出所有的列名
SELECT DISTINCT `KEY` FROM enroll;
然后,拼SQL语句,这样就可以动态查询。
ExtJs需要生成列,可以在后端写一个接口,返回所有列的名称集合,前端请求成功后,循环生成Extjs列
@完颜泓瑾: OK
@完颜泓瑾:
这个方法可以动态加载列,我之前是通过点击查询来实现的,如果要是初始化的话可以放在初始化相关的事件中完成。
至于字段,你也可以使用类似的方法。
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 }
希望对你有帮助。