Extjs 在渲染器网格单元中存储不加载
我试图在我的列中呈现一个字符串,而不是您的id。我创建了这个解决方案:,但它不适用于动态存储 在我的网格中,我将存储加载到渲染器中:Extjs 在渲染器网格单元中存储不加载,extjs,grid,store,renderer,Extjs,Grid,Store,Renderer,我试图在我的列中呈现一个字符串,而不是您的id。我创建了这个解决方案:,但它不适用于动态存储 在我的网格中,我将存储加载到渲染器中: columns: [ {xtype : 'gridcolumn', text: 'Id', dataIndex: 'id'}, {xtype : 'gridcolumn', text: 'Validade', dataIndex: 'dataValidade', renderer: funct
columns: [
{xtype : 'gridcolumn', text: 'Id', dataIndex: 'id'},
{xtype : 'gridcolumn', text: 'Validade', dataIndex: 'dataValidade', renderer: function(object){return Ext.Date.format(object, 'd-m-Y');}},
{xtype : 'gridcolumn', text: 'Complexo', dataIndex: 'id', renderer: function(value) {
storeComplexoPorValidade.getProxy().url = caminhoContexto + "validade/complexoporid/" + value + "/dados.json";
storeComplexoPorValidade.load();
console.log(storeComplexoPorValidade);
var idx = storeComplexoPorValidade.find('id', value);
var rec = storeComplexoPorValidade.getAt(idx);
return rec.get('descricao');
}
},
但是存储不会将数据加载到var,尽管它会执行请求。我发现了一个错误:无法调用undefined的方法'get'
怎么了?由于存储加载是异步的,所以在接收、处理代理请求的响应之前,渲染器的“返回”将完成,甚至可以分配给您尝试设置的变量 我建议你在这里重新考虑你的方法。有两种选择:
谢谢你的帮助,我还有很多工作要做。根据您的提示,我还发现了另外两种解决方案,它们可以帮助我使代码正常工作。及 这是我的代码工作:
Ext.define('validade', {
extend: 'Ext.data.Model',
fields: [{name: 'id', type: 'int'},
{name: 'dataValidade', type: 'date', dateFormat:'Y-m-d'},
{name: 'complexo', type: 'string', persist: 'false' }]
}))
Ext.define('ValidadeStore'{
扩展:“Ext.data.Store”,
型号:“validade”,
pageSize:itemsPerPage,
remoteSort:是的,
分拣机:[{
属性:“id”,
方向:“描述”
}],
代理:{
键入:“ajax”,
url:“/validade/grid/dados.json”,
读者:{
键入:“json”,
root:“数据”
},
},
自动加载:{
回调:函数(记录、操作、成功){
变量i=0
loadComplexo();
函数loadComplexo(){
如果(i<记录长度){
var rec=记录[i];
i++;
storeComplexo.getProxy().url=“validade/complexoproid/”+rec.get('id')+”/dados.json”;
storeComplexo.load({
回调:函数(记录、操作、成功){
var rec_u2;=记录[0];
rec.set('complexo',rec_.get('descripao');
loadComplexo();
}
});
}
}
}
}
}))
非常感谢 我怎样才能在之前加载?我在这里尝试,但还没有成功。我的主体将加载存储到Ext.window.window中的initComponent中,并且不将数据加载到var中。但是,当我在'itemclick'侦听器中调用函数时,它就工作了。因此,在创建窗口之前,您可以运行helper存储的加载操作。在这个商店的回调中,您可以在那里创建窗口,这样您就知道助手商店已经加载并准备就绪。然后,您只需在列渲染器中获取对存储的引用,并在不使用代理加载的情况下查找值。如果帮助器存储包含静态数据(例如,数据库表中的某些查找值没有或很少更改),则您可以在应用启动时始终加载数据。这样,应用程序中的存储数据始终可用,并且不需要在创建窗口之前加载,因为它在启动时就已经存在。ExistDissole,感谢您的帮助。我把我的解决方案放在这里。
Ext.define('ValidadeStore',{
extend: 'Ext.data.Store',
model: 'validade',
pageSize: itemsPerPage,
remoteSort: true,
sorters: [{
property : 'id',
direction: 'DESC'
}],
proxy: {
type: 'ajax',
url : '/validade/grid/dados.json',
reader : {
type : 'json',
root : 'data'
},
},
autoLoad: {
callback: function(records, operation, success){
var i = 0
loadComplexo();
function loadComplexo(){
if (i < records.length) {
var rec = records[i];
i++;
storeComplexo.getProxy().url = "validade/complexoporid/" + rec.get('id') + "/dados.json";
storeComplexo.load({
callback: function(records, operation, success){
var rec_ = records[0];
rec.set('complexo',rec_.get('descricao'));
loadComplexo();
}
});
}
}
}
}