<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    幫助IT團隊快速構建符合jt808協議部標的基于java技術的GPS和視頻平臺(2379423771@qq.com)

    Javascript Widget之二 基于EXT JS 的可重用的無限級聯下拉框

    EXT JS 中的Ext.form.ComboBox 是基于輸入框封裝的widget,很靈活,代價是易用性非常差,特別是針對復雜的多級級聯框。

    調用者需要針對自己的需求做一下靈活的封裝,來降低復雜度,讓開發人員更容易調用,同時代讓碼復用的程度更高。

    無論是省市鄉鎮,還是商品分類,無論是兩級,還是多級,還是同級多個Child, API的行為都應當保持一致。

    特點:
    1.將數據源封裝在內部,簡化調用代碼

    2.一個下拉框允許設置同級多個child下拉框

    3.允許設置默認值,并觸發Select事件

    4.下拉框中,允許設置特有的POST request 參數,在發送請求時,自動發送。

    調用方式:


    ?1Ext.onReady(function(){
    ?2????????//城市下級有商業區和行政區,兩種同級類型,
    ?3????????//后端通過?data2.html?及?Post?參數?type?和?parent來?輸出不同的數據
    ?4????????var?myCmb1?=?new?MyComboBox({
    ?5?????????????dataUrl:'data2.html',
    ?6?????????????applyTo:'select1',???
    ?7?????????????defaultValue:'2',
    ?8?????????????params:{type:'city'}??//城市
    ?9????????????
    10????????}
    );????
    11
    12????????var?myCmb2?=?new?MyComboBox({
    13?????????????dataUrl:'data2.html',
    14?????????????applyTo:'select2',???
    15?????????????params:{type:'business'}??//商業區
    16????????????
    17????????}
    );????
    18
    19????????var?myCmb3?=?new?MyComboBox({
    20?????????????dataUrl:'data2.html',
    21?????????????applyTo:'select3',?
    22?????????????params:{type:'district'}??//行政區
    23????????????
    24????????}
    );????
    25
    26????????myCmb1.addChild(myCmb2).addChild(myCmb3);??
    27
    28????????myCmb1.reload();
    29
    30}
    );

    代碼:
    ?1MyComboBox?=?Ext.extend(Ext.form.ComboBox,?{
    ?2????????????????valueField:?'id',??????
    ?3????????????????displayField:?'label',
    ?4????????????????emptyText:'請選擇',//默認值?
    ?5????????????????mode:'local',
    ?6????????????????triggerAction:'all',
    ?7????????????????initComponent:?function(){
    ?8???????????????????//在組件初始化期間調用的代碼
    ?9
    10???????????????????this.children?=?[];????????????
    11?????????????
    12????????????????????//調用父類構造函數(必須)
    13????????????????????MyComboBox.superclass.initComponent.apply(this,?arguments);
    14
    15????????????????????//**設置數據源**
    16????????????????????this.store?=?new?Ext.data.Store({??
    17?????????????????????????baseParams:?this.params?||?{},??
    18?????????????????????????proxy:?new?Ext.data.HttpProxy({???
    19?????????????????????????????url:?this.dataUrl??
    20?????????????????????????}
    ),???
    21?????????????????????????reader:?new?Ext.data.JsonReader({???
    22?????????????????????????????root:?'dms',???
    23?????????????????????????????id:?'id',
    24?????????????????????????????totalProperty:?'recordCount',?
    25?????????????????????????????}
    ,?[???
    26?????????????????????????????????{name:?'id',?mapping:?'id'},???
    27?????????????????????????????????{name:?'label',?mapping:?'label'}???
    28?????????????????????????????])???
    29????????????????????????}
    );?
    30????????????????}
    ,
    31????????????????//設置默認值,并觸發Select?事件
    32????????????????setDefaultValue:function(v){
    33????????????????????this.setValue(v);
    34
    35????????????????????this.fireEvent('select',?this);
    36????????????????}
    ,
    37????????????????/**?向數據源添加request參數?*/
    38????????????????addParam:function(parameters){
    39????????????????????Ext.apply(this.store.baseParams,?parameters);
    40????????????????}
    ,
    41????????????????
    42????????????????listeners:{????????
    43???????????????????select?:?function(combo,?record,index){??????
    44??????????????????????Ext.each(this.children,?function(child){
    45???????????????????????????????//child.clearValue();
    46????????????????????????????????//級聯的子下拉框會多發送一個&parent=..的參數,后端據此可以做出判斷如何加載數據
    47???????????????????????????????child.addParam({parent:combo.value});??
    48
    49???????????????????????????????child.reload();
    50
    51??????????????????????}
    );???
    52???????????????????}
    ??????
    53???????????????}
    ,???
    54???????????????/**?添加下級級聯的下拉框?*/
    55???????????????addChild:function(child){
    56???????????????????this.children.push(child);
    57
    58???????????????????return?this;
    59???????????????}
    ,
    60???????????????/**?重新加載數據源?*/
    61???????????????reload:function(){
    62??????????????????if(this.store)
    63???????????????????????this.store.load();????
    64??????????????????if(this.defaultValue){
    65?????????????????????this.setDefaultValue(this.defaultValue);
    66?????????????????????this.defaultValue?=?null;???//默認值,只初始化一次
    67??????????????????}

    68
    69
    70??????????????????return?this;
    71???????????????}

    72
    73????????????}
    );


    應用庫:
    1?link?rel="stylesheet"?type="text/css"?href="../../resources/css/ext-all.css"?/>
    2????link?rel="stylesheet"?type="text/css"?href="../../resources/css/xtheme-gray.css"?/>
    3
    4script?src="../../js/ext-base.js">span style="COLOR: #800000">script>
    5script?src="../../js/ext-all-debug.js">span style="COLOR: #800000">script>


    20人合租600元/年

    posted on 2008-11-23 11:34 Speed 閱讀(4492) 評論(0)  編輯  收藏 所屬分類: 框架設計前端設計Javascript WidgetEXT

    導航

    留言簿(15)

    隨筆分類

    值得一看的博客

    積分與排名

    最新評論

    閱讀排行榜

    主站蜘蛛池模板: 国产精品亚洲专区无码WEB| 国产成人精品日本亚洲专一区| 国产福利免费在线观看| 又粗又大又猛又爽免费视频| 亚洲国产精品成人精品无码区 | 亚洲精品福利网泷泽萝拉| 亚洲一级毛片免观看| 黄网站色视频免费看无下截| 一区二区三区无码视频免费福利| 亚洲免费一级视频| 日韩a级毛片免费观看| 久久精品国产亚洲av麻| 麻豆亚洲AV成人无码久久精品 | 久久夜色精品国产亚洲| 外国成人网在线观看免费视频| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲一区二区三区免费| 免费可以看黄的视频s色| 亚洲伊人成无码综合网| 自怕偷自怕亚洲精品| 色屁屁www影院免费观看视频| 亚洲av午夜精品一区二区三区| 亚洲欧洲日产v特级毛片| 巨胸喷奶水视频www免费视频| 18勿入网站免费永久| 久久久久亚洲av无码专区蜜芽| 久久水蜜桃亚洲AV无码精品| 久久w5ww成w人免费| 中文字幕日韩亚洲| 精品韩国亚洲av无码不卡区| 亚洲AV无码乱码在线观看性色扶| 大妹子影视剧在线观看全集免费 | 在线观看AV片永久免费| 国产亚洲av片在线观看16女人| 国产成人+综合亚洲+天堂| 免费观看黄网站在线播放| 亚洲五月激情综合图片区| 青青操视频在线免费观看| 国产亚洲精品久久久久秋霞| 五月天国产成人AV免费观看| 国产美女无遮挡免费视频网站|