国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Extjs4.0 ComboBox如何實現(xiàn)三級聯(lián)動

2019-11-20 10:06:27
字體:
供稿:網(wǎng)友

很多網(wǎng)友在問,Extjs4.0 ComboBox如何實現(xiàn),好在之前用3.x實現(xiàn)過一個三級聯(lián)動,如今用Extjs4.0來實現(xiàn)同樣的聯(lián)動效果。其中注意的一點就是,3.x中的model:'local'在Extjs4.0中用queryMode: 'local'來表示,而且在3.x中Load數(shù)據(jù)時用reload,但是在extjs4.0中要使用load來獲取數(shù)據(jù)。如下圖:

代碼部分

先看HTML代碼:

<html ><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>MHZG.NET-城市三級聯(lián)動實例</title><link rel="stylesheet" type="text/css" href="../../resources/css/ext-all.css" /><script type="text/javascript" src="../../bootstrap.js"></script><script type="text/javascript" src="../../locale/ext-lang-zh_CN.js"></script><script type="text/javascript" src="combobox.js"></script></head><body></body></html>

簡單的很,就是加載了基本的CSS文件和JS文件,并且加載自定義的combobox.js文件。

combobox.js:

 Ext.require('Ext.*');Ext.onReady(function(){ //定義ComboBox模型 Ext.define('State', {   extend: 'Ext.data.Model',   fields: [     {type: 'int', name: 'id'},     {type: 'string', name: 'cname'}   ] });  //加載省數(shù)據(jù)源 var store = Ext.create('Ext.data.Store', {   model: 'State',   proxy: {     type: 'ajax',     url: 'city.asp?act=sheng&n='+new Date().getTime()+''   },   autoLoad: true,   remoteSort:true }); //加載市數(shù)據(jù)源 var store1 = Ext.create('Ext.data.Store', {   model: 'State',   proxy: {     type: 'ajax',     url: 'city.asp?act=shi&n='+new Date().getTime()+''   },   autoLoad: false,   remoteSort:true }); //加載區(qū)數(shù)據(jù)源 var store2 = Ext.create('Ext.data.Store', {   model: 'State',   proxy: {     type: 'ajax',     url: 'city.asp?act=qu&n='+new Date().getTime()+''   },   autoLoad: false,   remoteSort:true });     Ext.create("Ext.panel.Panel",{  renderTo: document.body,  width:290,  height:220,  title:"城市三級聯(lián)動",  plain: true,  margin:'30 10 0 80',  bodyStyle: "padding: 45px 15px 15px 15px;",  defaults :{    autoScroll: true,    bodyPadding: 10  },  items:[{    xtype:"combo",    name:'sheng',    id : 'sheng',    fieldLabel:'選擇省',    displayField:'cname',    valueField:'id',    store:store,    triggerAction:'all',    queryMode: 'local',     selectOnFocus:true,    forceSelection: true,    allowBlank:false,    editable: true,    emptyText:'請選擇省',    blankText : '請選擇省',    listeners:{        select:function(combo, record,index){         try{           //userAdd = record.data.name;           var parent=Ext.getCmp('shi');           var parent1 = Ext.getCmp("qu");           parent.clearValue();           parent1.clearValue();           parent.store.load({params:{param:this.value}});         }         catch(ex){           Ext.MessageBox.alert("錯誤","數(shù)據(jù)加載失敗。");         }      }    }    },    {    xtype:"combo",    name:'shi',    id : 'shi',    fieldLabel:'選擇市',    displayField:'cname',    valueField:'id',    store:store1,    triggerAction:'all',    queryMode: 'local',    selectOnFocus:true,    forceSelection: true,    allowBlank:false,    editable: true,    emptyText:'請選擇市',    blankText : '請選擇市',    listeners:{        select:function(combo, record,index){         try{           //userAdd = record.data.name;           var parent = Ext.getCmp("qu");           parent.clearValue();           parent.store.load({params:{param:this.value}});         }         catch(ex){           Ext.MessageBox.alert("錯誤","數(shù)據(jù)加載失敗。");         }      }    }    },    {    xtype:"combo",    name:'qu',    id : 'qu',    fieldLabel:'選擇區(qū)',    displayField:'cname',    valueField:'id',    store:store2,    triggerAction:'all',    queryMode: 'local',    selectOnFocus:true,    forceSelection: true,    allowBlank:false,    editable: true,    emptyText:'請選擇區(qū)',    blankText : '請選擇區(qū)',    }  ] })});

上述代碼中,如果在ComboBox直接定義store數(shù)據(jù)源,會出現(xiàn)這樣一種情況,那就是當(dāng)選擇完第一個省,點擊第二個市的時候,會閃一下,再點擊,才會出現(xiàn)市的數(shù)據(jù)。那么要解決這樣的情況,那么必須先要定義好省、市、區(qū)的數(shù)據(jù)源。那么再點擊的時候,就不會出現(xiàn)上述情況了。

代碼中,使用store為省的數(shù)據(jù),設(shè)置其autoLoad為true,那么頁面第一次加載的時候,就會自動加載省的數(shù)據(jù),然后給省和市添加了監(jiān)聽select,作用在于當(dāng)點擊省的時候,要清空市和區(qū)的數(shù)據(jù),并根據(jù)當(dāng)前選定的值去加載對應(yīng)的數(shù)據(jù)到市的數(shù)據(jù)源中。當(dāng)然store1和store2原理是一樣的。

最后,服務(wù)端要根據(jù)傳的值進行數(shù)據(jù)檢索及返回正確數(shù)據(jù),這里沒有從數(shù)據(jù)庫中查詢數(shù)據(jù),而只是簡單的寫了一些測試代碼,相信extjs代碼沒有任何的問題了,那么服務(wù)端返回數(shù)據(jù),就不是一件很重要的事情了。

City.asp:

 <%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%><%  Response.ContentType = "text/html"  Response.Charset = "UTF-8"%><%  Dim act:act = Request("act")  Dim param : param = Request("param")  If act = "sheng" Then    Response.Write("[")    Response.Write("{""cname"":""北京市"",""id"":""110000""},")    Response.Write("{""cname"":""內(nèi)蒙古自治區(qū)"",""id"":""150000""}")    Response.Write("]")  End If  If act = "shi" Then    If param = "110000" Then      Response.Write("[")      Response.Write("{""cname"":""市轄區(qū)"",""id"":""110100""},")      Response.Write("{""cname"":""市轄縣"",""id"":""110200""}")      Response.Write("]")    ElseIf param = "150000" Then      Response.Write("[")      Response.Write("{""cname"":""呼和浩特市"",""id"":""150100""},")      Response.Write("{""cname"":""包頭市"",""id"":""150200""}")      Response.Write("]")    End If  End If  If act = "qu" Then    If param = "110100" Then      Response.Write("[")      Response.Write("{""cname"":""朝陽區(qū)"",""id"":""110101""},")      Response.Write("{""cname"":""昌平區(qū)"",""id"":""110102""}")      Response.Write("]")    ElseIf param = "110200" Then      Response.Write("[")      Response.Write("{""cname"":""密云縣"",""id"":""110201""},")      Response.Write("{""cname"":""房山縣"",""id"":""110202""}")      Response.Write("]")    ElseIf param = "150100" Then      Response.Write("[")      Response.Write("{""cname"":""回民區(qū)"",""id"":""150101""},")      Response.Write("{""cname"":""新城區(qū)"",""id"":""150102""}")      Response.Write("]")    ElseIf param = "150200" Then      Response.Write("[")      Response.Write("{""cname"":""青山區(qū)"",""id"":""150201""},")      Response.Write("{""cname"":""東河區(qū)"",""id"":""150202""}")      Response.Write("]")    End If  End If%>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 迁西县| 芜湖县| 中阳县| 宜阳县| 肥东县| 松滋市| 沅江市| 陆丰市| 凌云县| 连山| 射阳县| 英德市| 商河县| 惠东县| 高雄市| 盐亭县| 邵东县| 文成县| 昔阳县| 昌宁县| 荥阳市| 乳山市| 西昌市| 常州市| 泰州市| 涪陵区| 巴林左旗| 龙岩市| 西吉县| 钦州市| 会同县| 万载县| 汶川县| 阜南县| 陆良县| 丹凤县| 开远市| 巴林右旗| 迁西县| 梁山县| 班戈县|