论坛会员
我正在执行一项任务,其中Store从其中加载另一个商店。实际上我需要来自另一家商店的数据。
我的assignmentStore为
Ext.define('gantt.store.assignmentStore', {
extend : 'Ext.data.Store',
model : 'gantt.model.Assignment',
autoLoad : true,
// Must pass a reference to resource store
resourceStore : Ext.create('gantt.store.resourceStore'),
proxy : {
method: 'GET',
type : 'ajax',
api: {
read : 'projectmanagement/data/assignmentdata.js'//,
//create : 'foo.js',
//update : 'foo.js',
//destroy : 'foo.js'
},
reader : {
type : 'json',
root : 'assignments'
}
},
listeners : {
load : function() {
this.resourceStore.loadData(this.proxy.reader.jsonData.resources);
}
}
});
我的resourceStore是
Ext.define('gantt.store.resourceStore', {
extend : 'Ext.data.JsonStore',
model : 'gantt.model.Resource'
});
我的赋值数据值
{
"assignments" : [
{
"Id" : 1,
"TaskId" : 4,
"ResourceId" : 1,
"Units" : 100
},
{
"Id" : 2,
"TaskId" : 4,
"ResourceId" : 2,
"Units" : 80
},
{
"Id" : 3,
"TaskId" : 11,
"ResourceId" : 5,
"Units" : 50
},
{
"Id" : 4,
"TaskId" : 12,
"ResourceId" : 6,
"Units" : 50
}
],
"resources" : [
{"Id" : 1, "Name" : "Mats" },
{"Id" : 2, "Name" : "Nickolay" },
{"Id" : 3, "Name" : "Goran" },
{"Id" : 4, "Name" : "Dan" },
{"Id" : 5, "Name" : "Jake" },
{"Id" : 6, "Name" : "Kim" },
{"Id" : 7, "Name" : "Bart" }
]
}
我的resourcePanel代码位于
之下Ext.define('CustomAssignmentCellEditor', {
extend : "Gnt.widget.AssignmentCellEditor",
show: function(){
console.log('SHOW ', this.resourceStore.getCount());
this.callParent(arguments);
}
});
Ext.define('gantt.view.resourcemgt.resourcePanel',{
extend: 'Gnt.panel.Gantt',
alias: 'widget.resourcepanel',
requires: [
'Gnt.panel.Gantt',
'Sch.plugin.TreeCellEditing',
'Gnt.column.PercentDone',
'Gnt.column.StartDate',
'Gnt.column.EndDate',
'Gnt.widget.AssignmentCellEditor',
'Gnt.column.ResourceAssignment',
'Gnt.model.Assignment'
],
height : 400,
width: 1000,
multiSelect : true,
highlightWeekends : true,
showTodayLine : true,
loadMask : true,
enableDependencyDragDrop : false,
snapToIncrement : true,
startDate : new Date(2010,0,11),
endDate : Sch.util.Date.add(new Date(2010,0,11), Sch.util.Date.WEEK, 20),
viewPreset : 'weekAndDayLetter',
// Object with editor and dataIndex defined
leftLabelField : {
dataIndex : 'Name',
editor : { xtype : 'textfield' }
},
// ... or an object with editor and renderer defined
rightLabelField : {
dataIndex : 'Id',
renderer : function(value, record) {
return 'Id: #' + value;
}
},
initComponent: function() {
var me = this;
var resourceStore = Ext.create('gantt.store.resourceStore');
var assignmentStore = Ext.create('gantt.store.assignmentStore');
var taskStore = Ext.create('gantt.store.taskStore');
var assignmentEditor = Ext.create('CustomAssignmentCellEditor', {
assignmentStore : assignmentStore,
resourceStore : resourceStore
});
Ext.apply(me, {
resourceStore : resourceStore,
assignmentStore : assignmentStore,
taskStore : taskStore,
stripeRows : true,
plugins: [
Ext.create('Sch.plugin.TreeCellEditing', {
clicksToEdit: 1
})
],
eventRenderer : function(task) {
if (assignmentStore.findExact('TaskId', task.data.Id) >= 0) {
// This task has resources assigned, show a little icon
return {
ctcls : 'resources-assigned'
};
}
},
// Setup your static columns
columns : [
{
xtype : 'treecolumn',
header : 'Tasks',
dataIndex : 'Name',
width:250
},
{
header : 'Assigned Resources',
width:150,
editor : assignmentEditor,
xtype : 'resourceassigmentcolumn'
}
],
tbar : [
{
text : 'Indent',
iconCls : 'indent',
handler : function() {
var sm = g.lockedGrid.getSelectionModel();
sm.selected.each(function(t) {
t.indent();
});
}
},
{
text : 'Outdent',
iconCls : 'outdent',
handler : function() {
var sm = g.lockedGrid.getSelectionModel();
sm.selected.each(function(t) {
t.outdent();
});
}
}
]
});
me.callParent(arguments);
}
});
我的资源模型是
Ext.define('gantt.model.Resource', {
extend : 'Gnt.model.Resource'
});
实际上在我的应用程序中,我有一个显示AssignmentStore中所有数据的网格,并且网格有一列选择下拉列表,其数据来自ResourceStore。
所以我确实使用了以前的代码,但是ResourceStore没有加载,所以我的下拉选择框显示空的下拉列表。
请告诉我一些我可以尝试解决的解决方案。
答案 0 :(得分:0)
这是您的第二家商店加载了第一个商店加载事件的数据,该事件回答了您提出的问题:http://jsfiddle.net/dbrin/bQvyg/5/embedded/result/
我的组合框发生了什么事情并不清楚。您需要将代码细分为较小的部分,以便了解发生的情况。您的模型对象扩展了其他模型对象,因此我无法对它们进行任何说明。同样适用于面板 - 它们扩展自定义组件,而不是ExtJS的一部分。你真的应该向Bryntum寻求建议。我认为这是他们试图扩展的调度程序。