![164759_OYFA_1773772.png](http://static.oschina.net/uploads/space/2016/0129/164759_OYFA_1773772.png)
<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);
}
%>