Ext.form.field.ComboBox结合Servlet、JSON实现AutoComplete

12 篇文章 0 订阅
10 篇文章 0 订阅
     这是一个利用Ext.form.field.ComboBox实时获取数据的例子,这个combo必须是可以编辑的,在编辑的过程中通过输入的关键词去后台获取相关的数据。由于combo在自身的代码实现中已经实现了autocomplete的功能,只不过没有着重的表达出来,不过我们还是还是可以通过代码挖掘出来。这个是从一个官方的例子衍生而来的,官方的例子还是很全面的。下面我们看具体实现,前端JS代码:
Ext.onReady(function() {

	Ext.define("Resource", { //定义一个数据模型
				extend : 'Ext.data.Model',
				fields : [{
							name : 'text',
							mapping : 'text'
						}, {
							name : 'iconCls',
							mapping : 'iconCls'
						}]
			});

	ds = Ext.create('Ext.data.Store', { //定义数据源
				model : 'Resource',
				proxy : {
					type : 'ajax',
					url : 'autocomplete', //获取数据的路径
					reader : {
						type : 'json',
						root : 'root',
						totalProperty : 'total'
					}
				}
			});

	panel = Ext.create('Ext.panel.Panel', {
		renderTo : Ext.getBody(),
		title : '查找资源',
		width : 600,
		bodyPadding : 10,
		layout : 'anchor',
		items : [{
			xtype : 'combo',
			store : ds,
			displayField : 'text',
			typeAhead : false,
			hideLabel : true,
			hideTrigger : true,
			anchor : '100%',
			minChars : 1, //定义输入最少输入多少个字符的时候获取数据
			listConfig : {
				emptyText : '<div style="line-height:22px;padding:2px 10px">没有找到匹配的数据</div>',
				getInnerTpl : function() { //通过数据模型定义的内容,自定义展示内容
					return '<div class="search-item" >'
							+ '<div class="x-tree-icon x-tree-icon-leaf search-item-icon  {iconCls}"></div>'
							+ '{text}' + '</div>'
				}
			}
		}, {
			xtype : 'component',
			style : 'margin-top:10px',
			html : '输入关键词,实时查找后台数据。'
		}]
	});
});

     后台Java代码:
request.setCharacterEncoding("UTF-8");
		String query = request.getParameter("query"); //关键词默认参数名是query,如果需要自定义可以在combo配置
		//通过模糊查询获取数据,这里只是粗略的处理。其实整个功能这里才是最精细和关键的,如处理拼音的问题
		List<JSONObject> list = BaseDAO.findBySql("select t.text,t.iconCls " 
				+ " from resource t " + " where t.text like '%" + query.trim() + "%'");
		PageWriter.output(list, response);
     输出的数据格式是JSON, 在传递中文的时候,注意tomcat或其他应用服务器对于中文的处理。
   QQ讨论群:197331959, http://www.hatustudio.com  Leetop/Ext项目论坛
   http://download.csdn.net/detail/leecho571/4343627 实例下载,里面有个app.sql的数据库文件,用mysql数据库导入即可
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值