Extjs学习笔记(-):ComboBox联动 转载

说是下篇,其实也无所谓上下了,只是我在上一篇关于实现ComboBox联动的文章中提出的问题,虽然也在Google和园子里泡了很久,苦于E文太菜, 没能在Extjs官方论坛中寻求得到帮助,幸好皇天不负有心人,通过这么多天的努力,也总算吧问题给解决了,其实也不知道是不是实现我这个问题的最佳方法 了,只算是能够实现吧,所以,我也就算抛砖引玉吧,希望各位大虾能多多指教.问题的提出,请参看我的上篇文章: Extjs学习笔记(-):ComboBox联动(上)
    上篇曾提出不能实现第二个ComboBox数据的动态加载,下面先把正确的代码贴出,然后再就Extjs的某些属性,谈谈我的理解,不对之处,望指正.

  1      // 分类方式数据源
  2 ExpandedBlockStart.gifContractedBlock.gif      var  store = new  Ext.data.Store( dot.gif {
  3InBlock.gif        autoLoad:true,
  4ExpandedSubBlockStart.gifContractedSubBlock.gif   
None.gif      proxy:new Ext.data.HttpProxy(dot.gif{
  5InBlock.gif            url:'../admin/GetCatWise.aspx'
  6ExpandedSubBlockEnd.gif        }
),
  7ExpandedSubBlockStart.gifContractedSubBlock.gif        reader:new Ext.data.JsonReader(dot.gif{
  8InBlock.gif            id:'ID',
  9InBlock.gif            fields:['ID','Name']
 10ExpandedSubBlockEnd.gif        }
),
 11InBlock.gif        remoteSort:true
 12ExpandedBlockEnd.gif    } );
 13      //第二个ComboBox数据源
 14 ExpandedBlockStart.gifContractedBlock.gif     var  comstore  = new  Ext.data.Store( dot.gif {
 16InBlock.gif        autoLoad:false,
 17ExpandedSubBlockStart.gifContractedSubBlock.gif        proxy:new Ext.data.HttpProxy(dot.gif{
 18InBlock.gif            url:'../admin/GetCategory.aspx',
 20InBlock.gif            method:'post'
 21ExpandedSubBlockEnd.gif        }
),
 22ExpandedSubBlockStart.gifContractedSubBlock.gif        reader:new Ext.data.JsonReader(dot.gif{
 23InBlock.gif            id:'ID',
 24InBlock.gif            fields:['ID','CategoryName']
 25ExpandedSubBlockEnd.gif        }
),
 26InBlock.gif            remote:true
 27ExpandedBlockEnd.gif    }
);
 28 None.gif
 29 ExpandedBlockStart.gifContractedBlock.gif var  form = new  Ext.form.FormPanel( dot.gif {
 30InBlock.gif        labelWidth:55,
 32InBlock.gif        bodyStyle:'padding:5px 5px 0',
 33InBlock.gif        frame:true,
 34ExpandedSubBlockStart.gifContractedSubBlock.gif        items:[dot.gifdot.gif{
 74InBlock.gif            fieldLabel:'分类方式',
 75InBlock.gif            xtype:'combo',
 76InBlock.gif            editable :false,
 77InBlock.gif            name:'labCatWise',
 78InBlock.gif            id:'cmbCatWise',
 79InBlock.gif            lazyInit:false,
 80InBlock.gif            emptyText :'请选择dot.gif',
 81InBlock.gif            displayField:'Name',
 82InBlock.gif            valueField :'ID',
 83InBlock.gif            mode:'local',
 84InBlock.gif            store:store,
 85ExpandedSubBlockStart.gifContractedSubBlock.gif            listeners:dot.gif{select:function()dot.gif{
 86ExpandedSubBlockStart.gifContractedSubBlock.gif                trydot.gif{
 87InBlock.gif                    var parent=Ext.getCmp('comParent');
 90ExpandedSubBlockStart.gifContractedSubBlock.gif                    parent.store.reload(dot.gif{params:dot.gif{wiseID:this.value}});
 91ExpandedSubBlockEnd.gif                }

 92InBlock.gif                catch(ex)
 93ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
 94InBlock.gif                    Ext.MessageBox.alert(ex);
 95ExpandedSubBlockEnd.gif                }

 96ExpandedSubBlockEnd.gif            }
}
,
 97InBlock.gif            triggerAction:'all',
 98InBlock.gif            typeAhead :true,
 99InBlock.gif            anchor:'100%'
100InBlock.gif            
101ExpandedSubBlockStart.gifContractedSubBlock.gif        }
dot.gif{
102InBlock.gif            fieldLabel:'所属父类',
103InBlock.gif            xtype:'combo',
104InBlock.gif            editable :false,
105InBlock.gif            emptyText :'请选择dot.gif',
106InBlock.gif            id:'comParent',
107InBlock.gif            loadingText :'正在请求数据,请稍后dot.gif',
108InBlock.gif            store:comstore,
109InBlock.gif            displayField:'CategoryName',
110InBlock.gif            valueField :'ID',
111InBlock.gif            mode:'local',
112InBlock.gif            triggerAction:'all',
113InBlock.gif            name:'labParent',
114InBlock.gif            anchor:'100%'
115ExpandedSubBlockStart.gifContractedSubBlock.gif        }
]
121ExpandedBlockEnd.gif    }
);

    现在,我就上面的代码做几点解释:
    1.通过设置第一个ComboBox的Select事件,在select事件中动态的加载第二个ComboBox的store,以达到ComboBox的联动效果.
    2.我在select事件中,通过给第二个store传递不同的参数,然后再重新加载数据,以改变第二个store,但我在之前的实现方式是这样的:
       var store=new Ext.data.Store(...);
       secondCombo.store=store;
   这样是不能实现的,这就引发了我对Extjs类的配置属性(config),公共属性(),公共方法(Method)的思考,我认为,Extjs类的配置 属性是不能被动态配置的,就如同上面这样的写法,当然,可能可以通过调用或设置某些公共的方法和属性来改变这些配置属性,但不能直接设置.不知道我这样理 解对否?
    3.mode的理解,请注意高亮显示,在这里,我们把mode设置成'local',原因再于,在第一个comboBox的store中,我们设置了她的 autoload属性为true,也就是在页面加载的时候就已经从服务器获取了数据,所以,我们在第一个ComboBox中的Mode就设置为 local,原因是我们已经获取了数据.第二个ComboBox中的store的数据,是我们在第一个ComboBox的select事件中获取的,所 以,在这里,我们也要把她的mode设置成local.关于comboBox的Mode配置属性的设置,需要根据自己的实际情况来设置,需要大家在不断的 练习中掌握.
    好了,本说我E文菜,看来,我的中文更菜哦,不多说,望大家指正.

转载于:https://www.cnblogs.com/SevenMilk/archive/2011/03/22/1991725.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值