EXTJS 动态获取列及列值问题
在开发的时候,经理给了一个这样的开发任务,在一个GRID中,列从数据库表中来,,同时相应数据也是从数据库(竖表)中来,,最开妈可郁闷了,,,后来想到一个方法..如下:
var sql_header="select * from LDElementDef where LDElementDef.subjectno='"+subjectno+"'";//获取列名称信息.
var cm_data=app.SynXHR("jsplib/jsonquery.jsp?cmdType=header&sql="+sql_header);";//获取列名称信息.
cm_data.unshift(new Ext.grid.RowNumberer());//在列属性前面再加个字段,unshift的用法,,最总是在最前面增加属性,
var tmp=new Ext.grid.GridEditor(new Ext.form.TextField({allowBlank: false}));//是否可编辑 false为可编辑
var sm=new Ext.grid.CheckboxSelectionModel({singleSelect:false});//是否可多选择 false为多选
//3.初始化ColumnModel
var cm =new Ext.grid.ColumnModel({
columns:cm_data,//列名,,从数据库中获取..
defaults:{
editor:tmp
}
});
//4.获取列名
var sql_colname="select * from LDElementDef where LDElementDef.subjectno='"+subjectno+"'";
var colname=app.SynXHR("jsplib/jsonquery.jsp?cmdType=colName&sql="+sql_colname);
//5.构造grid数据
var sql_content="select * from lcsubject where subjectserialno = '"+subjectno+"'";//查询数据
var storeGrid=new Ext.data.Store({
proxy:new Ext.data.HttpProxy({url:'jsplib/jsonqueryR.jsp?sql='}),
reader:new Ext.data.JsonReader({
totalProperty:'totalProperty',
root:'root'
},
colname
)
});
storeGrid.load();
这样就OK了,呵呵,
同时,在这中,有个同步的问题,大家也看到了一个:app.SynXHR的东东,这是一个同步处理方法,其方法代码如下:
app.SynXHR=function(url){
if (window.ActiveXObject) {
obj = new ActiveXObject('Microsoft.XMLHTTP');
}
else if (window.XMLHttpRequest) {
obj = new XMLHttpRequest();
}
obj.open('GET', url, false);
obj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
obj.send(null);
return Ext.util.JSON.decode(obj.responseText);
}
使用之前,请注意在Ext.onReady前面定义一下,如:
var app={};
Ext.onReady(function(){};