`
bainian_205
  • 浏览: 44708 次
  • 性别: Icon_minigender_1
  • 来自: 河北
社区版块
存档分类
最新评论

Ext之级联ComboBox

阅读更多
/**
* 定义store,在baseParams中定义参数,请求服务端数据,返回数据源
*/
var modelsStore = new Ext.data.JsonStore({
                         url : 'cars-makes-models.action',
                         baseParams : {
                                 cmd : 'models'
                         },
                         root : 'models',
                         fields : ['id', 'name']
                 });

/**
*
* makeCombo 父类combox 控制自身store的加载, 以及modelStore的加载 通过select触发事件,去级联modelStore
*/

var MakeCombo = {
         xtype : 'combo',
         store : makestore,
         displayField : 'name',
         valueField : 'id',
         typeAhead : true,
         editable : false,
         mode : 'remote',
         forceSelection : true,
         triggerAction : 'all',
         fieldLabel : 'Make',
         emptyText : 'Select a make...',
         selectOnFocus : true,
         anchor : '95%',
         store : new Ext.data.JsonStore({
                                 url : 'cars-makes-models.action',
                                 baseParams : {
                                         cmd : 'makes'
                                 },
                                 root : 'makes',
                                 fields : ['id', 'name']
                         }),
         listeners : {
                 'select' : function(cmb, rec, idx) {
                         // 得到models-combo组件
                         modelsCbx = Ext.getCmp('models-combo');
                         // 清除数据
                         modelsCbx.clearValue();
                         // 通过传入自身参数使modelStore重新加载
                         modelsCbx.store.load({
                                                 params : {
                                                         'makeId' : this.getValue()
                                                 }
                                         });
                         // 启用组件
                         modelsCbx.enable();
                 }
         }
};

/**
* 子类combox 注意这里的mode是定义为local(按常理是remote) 原因是不让这个组件在没有级联的关系下加载数据
*/

var ModelCombo = {
         xtype : 'combo',
         id : 'models-combo',
         store : modelsStore,
         displayField : 'name',
         valueField : 'id',
         typeAhead : true,
         editable : false,
         mode : 'local',
         forceSelection : true,
         triggerAction : 'all',
         fieldLabel : 'Model',
         emptyText : 'Select a model...',
         selectOnFocus : true,
         disabled : true,
         anchor : '95%'
};

/**
* 初始化面板
*/

Ext.onReady(function() {
                         var newCarForm = new Ext.FormPanel({
                                                 frame : true,
                                                 title : 'Car Reviews',
                                                 bodyStyle : 'padding:5px',
                                                 width : 420,
                                                 id : 'make-selector-frm',
                                                 url : 'new-car.php',
                                                 items : [MakeCombo, ModelCombo]
                                         });
                         newCarForm.render(document.body);
                 });
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics