This is what I ended up doing.
The Store:
Code:
Ext.define('MySchool.store.common.QuarterSubjectStore', { extend: 'Ext.data.Store',
alias: 'store.commonquartersubjectstore',
requires: [
'MySchool.model.common.QuarterSubjectModel',
'Ext.data.Field'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
model: 'MySchool.model.common.QuarterSubjectModel',
storeId: 'common.QuarterSubjectStore',
data: [
],
fields: [
{
name: 'id',
type: 'int'
},
{
name: 'name',
type: 'string'
},
{
name: 'qtrId',
type: 'int'
},
{
name: 'qtrName',
type: 'string'
},
{
name: 'subjId',
type: 'int'
},
{
name: 'subjName',
type: 'string'
}
]
}, cfg)]);
},
myLoad: function() {
//commonQuarterSubjectStore.removeAll();
this.removeAll();
var subjectStore = Ext.getStore( 'subject.SubjectStore');
var numSubjects = subjectStore.count();
for( var i = 0; i < numSubjects; i++ )
{
var record = subjectStore.getAt(i);
var qtrName = record.get( 'qtrName' );
var qtrYear = record.get( 'qtrYear' );
var subjName = record.get( 'subjName' );
var subjId = record.get( 'subjId' );
var qtrId = record.get( 'qtrId' );
var name = qtrName + '/' + qtrYear + '-' + subjName;
console.log( 'name=' + name );
this.add({
name: name,
id: i,
qtrName: qtrName,
subjName: subjName,
qtrId: qtrId,
subjId: subjId
});
}
}
});
The Model:
Code:
Ext.define('MySchool.model.common.QuarterSubjectModel', { extend: 'Ext.data.Model',
alias: 'model.commonquartersubjectmodel',
requires: [
'Ext.data.Field'
],
fields: [
{
name: 'id',
type: 'int'
},
{
name: 'name',
type: 'string'
},
{
name: 'qtrId',
type: 'int'
},
{
name: 'qtrName',
type: 'string'
},
{
name: 'subjId',
type: 'int'
},
{
name: 'subjName',
type: 'string'
}
]
});
The Form:
Code:
Ext.define('MySchool.view.monthly.summary.NewSummaryFormPanel', { extend: 'Ext.form.Panel',
alias: 'widget.monthlynewsummaryformpanel',
requires: [
'MySchool.view.common.QuarterComboBox',
'MySchool.view.common.MonthComboBox',
'Ext.form.FieldSet',
'Ext.form.field.ComboBox',
'Ext.form.field.Hidden',
'Ext.button.Button'
],
draggable: true,
floating: true,
frame: true,
itemId: 'monthlynewsummaryformpanel',
width: 500,
bodyPadding: 10,
title: 'New Monthly Summary Form',
initComponent: function() {
var me = this;
Ext.applyIf(me, {
items: [
{
xtype: 'fieldset',
itemId: 'monthlysummaryfieldset',
title: 'Monthly Summary Fields',
items: [
{
xtype: 'commonquartercombobox',
anchor: '100%'
},
{
xtype: 'commonmonthcombobox',
anchor: '100%'
}
]
},
{
xtype: 'button',
itemId: 'newmonthlysummarycanel',
text: 'Canel'
},
{
xtype: 'button',
itemId: 'newmonthlysummarysubmit',
text: 'Submit'
}
]
});
me.callParent(arguments);
}
});
In the controller:
Code:
onNewmonthlysummariestoolClick: function(tool, e, eOpts) { debugger;
var studentStore = Ext.getStore('student.StudentStore');
var subjectStore = Ext.getStore( 'subject.SubjectStore');
var commonQuarterSubjectStore = Ext.getStore( 'common.QuarterSubjectStore');
var commonMonthStore = Ext.getStore('common.MonthStore');
var studentRecord = studentStore.getAt(0);
var studentId = studentRecord.get( 'id' );
var studentName = studentRecord.get( 'userName' );
var newDialog = Ext.create( 'MySchool.view.monthly.summary.NewSummaryFormPanel' );
newDialog.down('#newmonthlysummary-studentid').setValue( studentId );
newDialog.down('#newmonthlysummary-studentname').setValue( studentName );
commonQuarterSubjectStore.myLoad();
commonMonthStore.myLoad();
window.console.log( 'New Monthly Summary Dialog' );
newDialog.render( Ext.getBody() );
newDialog.show();
},
The ComboBox:
Code:
Ext.define('MySchool.view.common.QuarterComboBox', { extend: 'Ext.form.field.ComboBox',
alias: 'widget.commonquartercombobox',
itemId: 'common-quartersubject',
fieldLabel: 'Choose Quarter Subject',
name: 'comboquarter',
allowOnlyWhitespace: false,
emptyText: 'Select one',
displayField: 'name',
forceSelection: true,
queryMode: 'local',
store: 'common.QuarterSubjectStore',
valueField: 'id',
initComponent: function() {
var me = this;
me.callParent(arguments);
}
});