extjs动态存储模型网格列
我有个奇怪的问题。我正在设置一个存储并调用load函数。加载存储时,我根据结果创建一个列模型,然后将该存储传递到网格并调用reconfigure()。网格看起来显示的行数正确,列标题正确,但单元格中的实际数据为空。但是,如果我在重新配置后调用grid.getStore().load()(这很糟糕,因为我已经加载了存储),数据将正确显示。有人知道为什么会这样吗?下面是相关代码的片段extjs动态存储模型网格列,extjs,dynamic,grid,store,Extjs,Dynamic,Grid,Store,我有个奇怪的问题。我正在设置一个存储并调用load函数。加载存储时,我根据结果创建一个列模型,然后将该存储传递到网格并调用reconfigure()。网格看起来显示的行数正确,列标题正确,但单元格中的实际数据为空。但是,如果我在重新配置后调用grid.getStore().load()(这很糟糕,因为我已经加载了存储),数据将正确显示。有人知道为什么会这样吗?下面是相关代码的片段 dynStore.load({ callback: function(records, opera
dynStore.load({
callback: function(records, operation, success) {
if (records && records.length) {
var dynStore = Ext.getStore('DynamicReportGeneratorResults');
var modelFields = [];
var dynamicColumns = [];
var sampleRow = records[0].raw;
Ext.Object.each(sampleRow, function (key, value) {
modelFields.push(key);
var dynColObj = {text: key, dataIndex: key};
if (key == "id") {
dynColObj.hidden = true;
}
dynamicColumns.push(dynColObj);
});
dynStore.model.setFields(modelFields);
var config = {'reportName': this['currentReportName']};
var reportResultWindow = Ext.create('Rms.view.DynamicReportGeneratorReportResultsWindow', config);
reportResultWindow.show();
this.getDynamicReportResultsGrid().reconfigure(dynStore, dynamicColumns);
/////*******
//this next line is stupid since the store is already loaded with data
/////*******
this.getDynamicReportResultsGrid().getStore().load();
}
else {
Ext.Msg.alert("Report Resuts", "No results from this report");
}
},
为什么不使用加载数据方法? 您拥有数据和所有内容,因此可以使用以下内容加载数据:
#YOUR_STORE.loadData( records, false );
作为
请参阅。我遇到了这个问题。我发现ExtJS中有一个bug,在某些情况下,没有为网格指定高度时,它会隐藏单元格数据。如果检查实际生成的HTML表,则单元格数据实际上在那里,但该表指定了
position:absolute
,出于某种原因,这会隐藏单元格数据
示例1隐藏单元数据,未指定高度
示例2指定高度的可见单元格数据
你能从你的服务器上发布一些数据对象吗?谢谢你的回复。我试过了,但不管用。同样的结果,网格弹出x个空行(空行数是我在事件侦听器的记录中得到的结果数)…关于这个的新数据。。。当我在加载后调用的函数中检查存储时。。。在store.data.items中,我正确定义了原始值,但未定义“data”值。换句话说。。。store.data.items[0]。原始={fieldOne:'real value'…}但store.data.items[0]。数据={}。当我加载带有该存储的网格时,网格显示为空行。。如果调用store.load并将其传递给网格,则不仅store.data.items[0]数据与原始值匹配,网格还会正确显示数据
this.getDynamicReportResultsGrid().getStore().loadData( records, false );
;(function(Ext) {
Ext.onReady(function() {
console.log("Ext.onReady")
var store = Ext.create("Ext.data.Store", {
fields: ["id", "name"]
,buffered: true
,pageSize: 100
,proxy: {
type: 'rest'
,url: '/anon/pen/azLBeY.js'
reader: {
type: 'json'
}
}
})
store.on("load", function(component, records) {
console.log("store.load")
console.log("records:")
console.log(records)
})
var grid = new Ext.create("Ext.grid.Panel", {
requires: ['Ext.grid.plugin.BufferedRenderer']
,plugins: {
ptype: 'bufferedrenderer'
}
,title: "people"
,loadMask: true
,store: store
,columns: [
{text: "id", dataIndex: "id"}
,{text: "name", dataIndex: "name"}
]
})
grid.on("afterrender", function(component) {
console.log("grid.afterrender")
})
grid.render(Ext.getBody())
store.load()
})
})(Ext)
;(function(Ext) {
Ext.onReady(function() {
console.log("Ext.onReady")
var store = Ext.create("Ext.data.Store", {
fields: ["id", "name"]
,buffered: true
,pageSize: 100
,proxy: {
type: 'rest'
,url: '/anon/pen/azLBeY.js'
reader: {
type: 'json'
}
}
})
store.on("load", function(component, records) {
console.log("store.load")
console.log("records:")
console.log(records)
})
var grid = new Ext.create("Ext.grid.Panel", {
requires: ['Ext.grid.plugin.BufferedRenderer']
,plugins: {
ptype: 'bufferedrenderer'
}
,title: "people"
,height: 200
,loadMask: true
,store: store
,columns: [
{text: "id", dataIndex: "id"}
,{text: "name", dataIndex: "name"}
]
})
grid.on("afterrender", function(component) {
console.log("grid.afterrender")
})
grid.render(Ext.getBody())
store.load()
})
})(Ext)