87,997
社区成员




是的,因为异步的时候数据没有获取,才导致错误的。如果用同步就不用改了
也可以用setTimeout延时获取
用异步放在回调函数中即可
var cm;
var ds;
Ext.ajax.request({
url: 'getPoqutityGridByPoId.do?detailPoId=' + poId,
method: 'post',
success: function(response, options) {
alert(response.responseText);
var json = Ext.util.JSON.decode(response.responseText);
var realjson = Ext.util.JSON.decode(json.msg);
cm = new Ext.grid.ColumnModel(realjson.column);
ds = new Ext.data.JsonStore({
data: realjson.data,
fields: ['color', 'col1', 'col2', 'col3', 'col4', 'col5', 'col6', 'col7', 'col8', 'col9', 'col10', 'total']
});
//将grid写在这里,有关异步的操作
var podetailgrid = new Ext.grid.GridPanel({
title: "",
cm: cm,
ds: ds,
viewConfig: {
forceFit: true
},
frame: true,
collapsible: true,
animCollapse: false,
iconCls: 'icon-grid'
});
最后显示grid
var pnl = new Ext.Viewport({
layout: 'border',
items: [{
region: 'north',
autoScroll: true,
border: false,
height: 720,
items: basePanel
},
{
region: 'center',
autoScroll: true,
border: false,
layout: 'fit',
items: podetailgrid
},
{
region: 'south',
autoScroll: true,
border: false,
height: 300,
minSize: 300,
maxSize: 600,
items: grid
}]
});
},
failure: function() {}
});
{
metaData: {
"idProperty": "id",
"root": "rows",
"totalProperty": "results"
"successProperty": "success",
colModel:[{dataIndex:'col1', header: 'Column 1'}, ...], // API漏了这个
"fields": [
{"name": "name"},
{"name": "job", "mapping": "occupation"}
],
可以把生成grid放在ajax请求的回调方法success中,
这样能保证请求的数据已经返回
试下看.
可能是异步的问题,异步加载数据的时候。后面的代码不会等待签名的ajax执行完了才执行的。
你将异步设为同步看看
success:
function(response,options){
alert(response.responseText);
var json = Ext.util.JSON.decode(response.responseText);
var realjson = Ext.util.JSON.decode(json.msg);//确定这里的object中可以拿到column并且是一个object就没有问题了
cm = new Ext.grid.ColumnModel(realjson.column);
ds = new Ext.data.JsonStore({
data:realjson.data,
fields:['color','col1','col2','col3','col4','col5','col6','col7','col8','col9','col10','total']
});
},