Ext中用PropertyGrid来完成显示系统信息,比如版本,硬件信息等功能再好不过,但是关于PropertyGrid控件给的例子有很多都是写死在前端代码里的,比如
var grid = new Ext.grid.PropertyGrid({ title: '属性表格', autoHeight: true, width: 300, renderTo: 'grid', viewConfig: { forceFit: true }, source: { "名字": "不告诉你", "创建时间": new Date(Date.parse('12/15/2007')), "是否有效": false, "版本号": .01, "描述": "嗯,估计没啥可说的" } });
但是很多时候,我想从服务器端取出一些硬件信息,或者软件信息。这种写法就完全不能满足我的需要。那要怎么样去完成这个功能呢?
首先,在PropertyGrid用来显示数据的属性为source,这个suorce接收的为一个javascript对象,也就是说,我可以往这里面传一个javascript对象就完全可以显示出来。说到这里,我想大家都明白了,从服务器端发个json对象过来,填充到里面。服务器端各种生成json对象的方法,我这里省略。
Ext.Ajax.request({ url:'systemInfo!list.action', success:function(response){ var result = Ext.decode(response.responseText); if(result.success){ var json = result.data; Ext.getCmp("propGrid").setSource(json); }else { alert('fail!'); } }, failure:function(){ alert("networkfailure"); } }); var propsGrid = new Ext.grid.PropertyGrid({ id: 'propGrid', width: 462, autoHeight: true });
上边的例子里面我简单起见,用的是Ext里面Ajax控件,当然,你也可以用record,store,reader。从后台得到json解析成为javascript对象,利用PropertGrid的setSource方法设置到source属性中,就能够完成相应的设值。
我说的只是大体思路,具体代码具体分析