Rumah > Artikel > hujung hadapan web > Bagaimana Extjs4.0 ComboBox melaksanakan tiga peringkat linkage_extjs
Ramai netizen bertanya bagaimana untuk melaksanakan Extjs4.0 ComboBox Mujurlah, pautan tiga peringkat telah dilaksanakan sebelum menggunakan 3.x, dan kini Extjs4.0 digunakan untuk mencapai kesan pautan yang sama. Satu perkara yang perlu diberi perhatian ialah model:'local' dalam 3.x diwakili oleh queryMode: 'local' dalam Extjs4.0 dan muat semula digunakan semasa memuatkan data dalam 3.x, tetapi ia perlu digunakan dalam extjs4.0 memuatkan untuk mendapatkan data. Seperti yang ditunjukkan di bawah:
Bahagian kod
Lihat kod HTML dahulu:
<html > <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>MHZG.NET-城市三级联动实例</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>
Ia sangat mudah, cuma muatkan fail CSS asas dan fail JS, dan muatkan fail combobox.js tersuai.
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'} ] }); //加载省数据源 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 }); //加载市数据源 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 }); //加载区数据源 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:"城市三级联动", 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("错误","数据加载失败。"); } } } }, { 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("错误","数据加载失败。"); } } } }, { xtype:"combo", name:'qu', id : 'qu', fieldLabel:'选择区', displayField:'cname', valueField:'id', store:store2, triggerAction:'all', queryMode: 'local', selectOnFocus:true, forceSelection: true, allowBlank:false, editable: true, emptyText:'请选择区', blankText : '请选择区', } ] }) });
Dalam kod di atas, jika anda mentakrifkan sumber data kedai secara langsung dalam ComboBox, akan berlaku situasi di mana apabila anda memilih wilayah pertama dan mengklik pada bandar kedua, ia akan berkelip seketika, dan kemudian klik semula . Data bandar muncul. Untuk menyelesaikan situasi ini, kita mesti menentukan sumber data wilayah, bandar dan daerah terlebih dahulu. Kemudian apabila anda klik semula, situasi di atas tidak akan berlaku.
Dalam kod, gunakan kedai sebagai data wilayah dan tetapkan autoMuatnya kepada benar Kemudian apabila halaman dimuatkan buat kali pertama, data wilayah akan dimuatkan secara automatik, dan kemudian pilihan pemantauan akan ditambahkan pada. wilayah dan bandar Kesannya ialah apabila halaman diklik Apabila memilih wilayah, data bandar dan daerah mesti dikosongkan dan data yang sepadan mesti dimuatkan ke dalam sumber data bandar berdasarkan nilai yang dipilih pada masa ini. Sudah tentu, prinsip store1 dan store2 adalah sama.
Akhir sekali, pelayan perlu mendapatkan semula data dan mengembalikan data yang betul berdasarkan nilai yang diluluskan. Tiada pertanyaan data daripada pangkalan data di sini, tetapi hanya menulis beberapa kod ujian. maka pelayan Mengembalikan data bukanlah perkara yang sangat penting.
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"":""内蒙古自治区"",""id"":""150000""}") Response.Write("]") End If If act = "shi" Then If param = "110000" Then Response.Write("[") Response.Write("{""cname"":""市辖区"",""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"":""朝阳区"",""id"":""110101""},") Response.Write("{""cname"":""昌平区"",""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"":""回民区"",""id"":""150101""},") Response.Write("{""cname"":""新城区"",""id"":""150102""}") Response.Write("]") ElseIf param = "150200" Then Response.Write("[") Response.Write("{""cname"":""青山区"",""id"":""150201""},") Response.Write("{""cname"":""东河区"",""id"":""150202""}") Response.Write("]") End If End If %>
Di atas adalah keseluruhan kandungan artikel ini, saya harap ia akan membantu kajian semua orang.