Extjs4.0 ComboBox如何实现三级联动_extjs

很多网友在问,Extjs4.0 ComboBox如何实现,好在之前用3.x实现过一个三级联动,如今用Extjs4.0来实现同样的联动效果。其中注意的一点就是,3.x中的model:'local'在Extjs4.0中用queryMode: 'local'来表示,而且在3.x中Load数据时用reload,但是在extjs4.0中要使用load来获取数据。如下图:

代码部分

先看HTML代码:

<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>

简单的很,就是加载了基本的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'}
   ]
 });

 //加载省数据源
 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 : '请选择区',
    }
  ]
 })
});

上述代码中,如果在ComboBox直接定义store数据源,会出现这样一种情况,那就是当选择完第一个省,点击第二个市的时候,会闪一下,再点击,才会出现市的数据。那么要解决这样的情况,那么必须先要定义好省、市、区的数据源。那么再点击的时候,就不会出现上述情况了。

代码中,使用store为省的数据,设置其autoLoad为true,那么页面第一次加载的时候,就会自动加载省的数据,然后给省和市添加了监听select,作用在于当点击省的时候,要清空市和区的数据,并根据当前选定的值去加载对应的数据到市的数据源中。当然store1和store2原理是一样的。

最后,服务端要根据传的值进行数据检索及返回正确数据,这里没有从数据库中查询数据,而只是简单的写了一些测试代码,相信extjs代码没有任何的问题了,那么服务端返回数据,就不是一件很重要的事情了。

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
%>

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索combobox
, 三级联动
Extjs4.0
extjs combobox 联动、extjs4 combobox 联动、combobox三级联动、extjs三级联动、extjs 省市区三级联动,以便于您获取更多的相关知识。

时间: 2024-10-06 13:30:11

Extjs4.0 ComboBox如何实现三级联动_extjs的相关文章

下拉框-关于easyui中combobox怎么在三级联动中点击第一级时清空第三极

问题描述 关于easyui中combobox怎么在三级联动中点击第一级时清空第三极 请问怎么将combobox实现联动之后,点击第一级时清空第三级的下拉框的数据,我实现了一个,但是不能公用,找了很久没有找到方法,使用combobox的clear也不行 解决方案 刚开始官网打不开,调试了半天才找到:$('#ID').combobox('loadData', {}); combobox的clear只是清空选中项.http://www.jeasyui.com/documentation/index.p

Easyui form combobox省市区三级联动_javascript技巧

使用方法 $(function () { //省市区三级联动 $.citySelect({ $province: $('#province'), $city: $('#city'), $County: $('#county') }); $('#ff').form('load', { 'province': '广东省', 'city': '深圳市', 'county': '罗湖区' }); }); <form id="ff" method="post">

jquery-有关js的三级联动中$s1[0].options

问题描述 有关js的三级联动中$s1[0].options 在用jquery制作三级联动菜单的代码中$s1[0].options[$s1[0].selectedindex].value的理解 解决方案 对象$s1的第一个元素的被选中项的值 解决方案二: $s1是jquery对象,$s1[0]转换为DOM对象,为select对象,$s1[0].options就是select的option对象集合,$s1[0].selectedindex是当前选中的option下标 整个代码$s1.val()就了,

三级联动练习

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;namespaceUserWeb{publicpartialclassWebForm1:System.Web.UI.Page{publicstring[]gradeList=newstring[]{"一年级","二年

Java框架SSH结合Easyui控件实现省市县三级联动示例解析_jquery

Easyui调用数据库实现省市县区三级联动的效果如果下 1.首先要设计数据库,如图所示.一个有4个字段code,note,pycode.code:行政区划代码,note:中文注释,pycode:拼音缩写. 其中code是由6个字段组成.如果是省级最后4位是0000,如果是地级市最后2位是00,其他是县区.  我已经把相关数据库代码上传到我的csdn资源中,需要的同学自行下载. 2.我用的是java.SSH框架结合Easyui控件 3.html代码如下 <tr> <td class=&qu

一个用webservice behavior实现的三级联动下拉列表框

web|下拉|下拉列表 我做了一个三级联动的下拉列表框,后台用webservice,前台用webservice behavior与后台通讯.请高手们多提改进意见. server端:(service1.asmx.cs)using System;using System.Text;using System.Configuration;using System.Collections;using System.ComponentModel;using System.Data;using System.

php+js+ajax+mysql实现省市三级联动

效果如下图: 思路:先获取所选省的市或者是所选时的县,将获取的数据转换为jason格式的字符串返回到ajax客户端,在客户端使用eval将jason格式的字符串转化为对象,将对象的每个元素值创建成文本节点,并创建option节点,将文本节点追加到option节点,在将option的节点追加给select节点. ajax-area-select.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &

简单实用jquery版三级联动select示例

本文主要为大家介绍下通过jquery实现三级联动select这里用到的json文件,只是事例,根据情况添加或编写,感兴趣的朋友可以参考下哈,希望对大家有所帮助   html和js部分 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=gbk /> <title>selectList</title> <style type="text/css">

jquery读取xml文件实现省市县三级联动的方法

  本文实例讲述了jquery读取xml文件实现省市县三级联动的方法.分享给大家供大家参考.具体如下: 页面代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66