组合框Ext.form.field.ComboBox

组合框Ext.form.field.ComboBox_第1张图片

<div id="localComboBox" class="w_320">
    <h2>本地数据源的组合框</h2>
</div>
<div id="remoteComboBox" class="w_320">
    <h2>远程数据源的组合框</h2>
</div>

Ext.onReady(function(){
    //Ext表单
    
    //Ext.form.Basic 基本表单组件二(拾取器字段Picker)
    //开发中使用表单面板组件Ext.form.Panel,它本质是一个标准的(面板)Ext.panel.Panel,它内置并自动创建了Ext.form.Basic基本表单组件
    //与原始表单主要3点不同(1.提交方式 2.表单验证 3.表单组件)
    //1.提交方式(同步---异步)
    //2.表单验证(需要手动验证----配置即可使用)
    //3.表单组件(基本的组件------扩展的功能强大的组件)
    
    //Picker抽象类,具有唯一的触发按钮用于在字段下方动态弹出面板
    //拾取器组件如:(1.ComboBox,2.Date,3.Time)
    
    //初始化信息提示功能
    Ext.QuickTips.init();
    
    //一、组合框Ext.form.field.ComboBox
    //1.本地数据源的组合框
    //1.1 定义数据模型
    Ext.define('postInfo',{
        extend: 'Ext.data.Model',
        fields : [{name : 'province'},{name : 'post'}]
    })
    //1.2 定义组合框中显示的数据源
    var postStore = Ext.create('Ext.data.Store',{
        model : 'postInfo',
        data : [
            {province : '北京',post : '100000'},
            {province : '通县',post : '101100'},
            {province : '昌平',post : '102200'},
            {province : '大兴',post : '102600'},
            {province : '密云',post : '101500'},
            {province : '延庆',post : '102100'},
            {province : '顺义',post : '101300'},
            {province : '怀柔',post : '101400'}
        ]
    });
    //1.3 创建表单
    Ext.create('Ext.form.Panel',{
        title : '本地数据源的组合框',
        width : 270,
        height : 100,
        frame : true,
        renderTo : 'localComboBox',
        bodyStyle : '5px',
        defautls : {
            width : 200,
            labelWidth : 70,
            labelSeparator : ': ',
            labelAlign : 'left'
        },
        items : [{
            id : 'postId',
            name : 'post',
            fieldLabel : '邮政编码',
            xtype : 'combo',
            listConfig : {
                emptyText : '未找到匹配值',
                maxHeight : 110
            },
            triggerAction : 'all',//点击触发按钮显示全部数据
            store : postStore,
            displayField : 'province',//定义要显示的字段
            valueField : 'post',//定义值字段
            queryMode : 'local',//本地模式
            forceSelection : true,//要求输入值必须在列表中存在
            typeAhead : true,//允许自动选择匹配的剩余部分文本
            value : '102600' //默认选择大兴
        }]
    });
    
    //2.远程数据源的组合框
    //2.1 定义数据模型
    Ext.define('bookInfo',{
        extend: 'Ext.data.Model',
        fields : [{name : 'bookName'}]
    });
    //2.2 定义组合框中显示的数据源
    var bookStore = Ext.create('Ext.data.Store',{
        model : 'bookInfo',
        proxy : {
            type : 'ajax',//Ext.data.AjaxProxy
            url :'../index.jsp',
            reader : new Ext.data.ArrayReader({model : 'bookInfo'})
        }
    });
    
    //2.3 创建表单
    Ext.create('Ext.form.Panel',{
        title : '远程数据源的组合框',
        width : 270,
        height : 100,
        renderTo : 'remoteComboBox',
        frame : true,
        bodyStyle :'padding:5px',
        defaults : {
            width : 200,
            labelWidth : 70,
            labelSeparator : ': ',
            labelAlign : 'left'
        },
        items : [{
            id : 'remoteComboBoxId',
            name : 'remoteComboBoxName',
            fieldLabel : '书籍列表',
            xtype : 'combo',
            listConfig : {
                loadingText : '正在加载书籍信息.....',
                emptyText : '未找到匹配值',
                maxHeight : 110
            },
            allQuery : 'allbook',//查询全部信息的查询字符串
            minChars : 3, //下拉列表框自动选择前用户输入的最小字符数量
            queryDelay : 300,//查询延迟时间
            queryParam : 'searchbook',//查询的名字
            triggerAction : 'all',//单击触发按钮显示全部数据,
            store : bookStore,//设置数据源
            displayField : 'bookName',
            valueField : 'bookName',
            queryMode : 'remote'//远程模式
            
        }]
        
    });
    
});

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%--
    服务器放回的格式为: [['a'],['b'],['c']]
--%>
<%
    String bookName = request.getParameter("searchbook");
    String jav = "['java编程思想'],['java入门'],['javascript程序设计']";
    String cpp = "['c++编程思想'],['c++入门'],['c++程序设计']";
    String php = "['php编程思想'],['php入门'],['php程序设计']";
    String books = "";
    if(bookName.equals("allbook")){
        books = "["+jav+","+cpp+","+php+"]";
        response.getWriter().write(books);
        return;
    }else{
        bookName = bookName.substring(0,3);//取得查询字符串的前3个字符
        if(bookName.equals("jav")){
            books= "["+jav+"]";
        }else if(bookName.equals("c++")){
            books= "["+cpp+"]";
        }else if(bookName.equals("php")){
            books= "["+php+"]";
        }else {
            books = "[['没有数据']]";
        }
        response.getWriter().write(books);
    }
%>


你可能感兴趣的:(组合框Ext.form.field.ComboBox)