Ext.ux.form.SearchField使用方法
来源:互联网 发布:c语言hello world程序 编辑:程序博客网 时间:2024/06/05 00:43
这学期一直在做一个管理系统,前台用到了ExtJs,现在开始总结这一学期的学习心得,首先我们从Ext.ux.form.SearchField开始讲,因为这个东西一直困扰我好长时间,直到项目结束前几天我才解决这个问题。
首先我们先附上Ext.ux.form.SearchField的源代码:
view plaincopy to clipboardprint?
/*!
* Ext JS Library 3.2.0
* Copyright(c) 2006-2010 Ext JS, Inc.
* licensing@extjs.com
* http://www.extjs.com/license
*/
Ext.ns('Ext.ux.form');
Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
initComponent : function(){
Ext.ux.form.SearchField.superclass.initComponent.call(this);
this.on('specialkey', function(f, e){
if(e.getKey() == e.ENTER){
this.onTrigger2Click();
}
}, this);
},
validationEvent:false,
validateOnBlur:false,
trigger1Class:'x-form-clear-trigger',
trigger2Class:'x-form-search-trigger',
hideTrigger1:true,
width:180,
hasSearch : false,
paramName : 'query',
onTrigger1Click : function(){
if(this.hasSearch){
this.el.dom.value = '';
var o = {start: 0};
this.store.baseParams = this.store.baseParams || {};
this.store.baseParams[this.paramName] = '';
// this.store.reload({params:o});
this.store.reload();
this.triggers[0].hide();
this.hasSearch = false;
}
},
onTrigger2Click : function(){
var v = this.getRawValue();
if(v.length < 1){
this.onTrigger1Click();
return;
}
var o = {start: 0};
this.store.baseParams = this.store.baseParams || {};
this.store.baseParams[this.paramName] = v;
// this.store.reload({params:o});
this.store.reload();
this.hasSearch = true;
this.triggers[0].show();
}
});
/*!
* Ext JS Library 3.2.0
* Copyright(c) 2006-2010 Ext JS, Inc.
* licensing@extjs.com
* http://www.extjs.com/license
*/
Ext.ns('Ext.ux.form');
Ext.ux.form.SearchField = Ext.extend(Ext.form.TwinTriggerField, {
initComponent : function(){
Ext.ux.form.SearchField.superclass.initComponent.call(this);
this.on('specialkey', function(f, e){
if(e.getKey() == e.ENTER){
this.onTrigger2Click();
}
}, this);
},
validationEvent:false,
validateOnBlur:false,
trigger1Class:'x-form-clear-trigger',
trigger2Class:'x-form-search-trigger',
hideTrigger1:true,
width:180,
hasSearch : false,
paramName : 'query',
onTrigger1Click : function(){
if(this.hasSearch){
this.el.dom.value = '';
var o = {start: 0};
this.store.baseParams = this.store.baseParams || {};
this.store.baseParams[this.paramName] = '';
// this.store.reload({params:o});
this.store.reload();
this.triggers[0].hide();
this.hasSearch = false;
}
},
onTrigger2Click : function(){
var v = this.getRawValue();
if(v.length < 1){
this.onTrigger1Click();
return;
}
var o = {start: 0};
this.store.baseParams = this.store.baseParams || {};
this.store.baseParams[this.paramName] = v;
// this.store.reload({params:o});
this.store.reload();
this.hasSearch = true;
this.triggers[0].show();
}
});
从源代码中我们看到我注视了一行:
view plaincopy to clipboardprint?
// this.store.reload({params:o});
// this.store.reload({params:o});
这个参数是用于分页的,我实际的项目中,分页用到了2个参数,分别是start和limit,但是这里只有start,因此如果reload只传start会报错,而且我通过测试发现,reload方法不需要传递参数,他它自动会使用原来的分页参数start和limit。
看到这个搜索框,我们一般可能会想,这个搜索控件是如何给后台传递参数的呢?从源代码中我们看到有一行
view plaincopy to clipboardprint?
paramName : 'query',
paramName : 'query',
当我们在搜索控件中输入查询条件,这个查询条件会赋值给query,查询条件就是通过这个参数名为query来传递的。我们在后台可以通过以下方式获取搜索条件中的文本:
view plaincopy to clipboardprint?
String query=request.getParameter("query");
String query=request.getParameter("query");
得到搜索条件以后我们就可以使用这个搜索条件查询数据库了。
下面我附上前台的ExtJs中使用SearchField的代码。
首先定义工具栏,定义如下:
view plaincopy to clipboardprint?
var toolbar = new Ext.Toolbar( [ {// 创建GridPanel的工具栏组件
text : '新增员工信息',
iconCls : 'add',
handler : addUser
}, {
text : '删除员工信息',
iconCls : 'remove',
handler : deleteUser
}, {
text : '修改员工信息',
iconCls : 'plugin',
handler : updateUser
}
, '-','查询:',' ', new Ext.ux.form.SearchField( {
store : userStore,
width : 110
})
]);
var toolbar = new Ext.Toolbar( [ {// 创建GridPanel的工具栏组件
text : '新增员工信息',
iconCls : 'add',
handler : addUser
}, {
text : '删除员工信息',
iconCls : 'remove',
handler : deleteUser
}, {
text : '修改员工信息',
iconCls : 'plugin',
handler : updateUser
}
, '-','查询:',' ', new Ext.ux.form.SearchField( {
store : userStore,
width : 110
})
]);
然后在grid中使用该工具栏:
view plaincopy to clipboardprint?
var userGrid = new Ext.grid.GridPanel( {// 创建Grid表格组件
applyTo : 'user-grid-div',// 设置表格现实位置
frame : true,// 渲染表格面板
tbar : toolbar,// 设置顶端工具栏
stripeRows : true,// 显示斑马线
autoScroll : true,// 当数据查过表格宽度时,显示滚动条
store : userStore,// 设置表格对应的数据集
viewConfig : {// 自动充满表格
autoFill : true
},
sm : sm,// 设置表格复选框
cm : cm,// 设置表格的列
bbar : new Ext.PagingToolbar( {
pageSize : 25,
store : userStore,
displayInfo : true,
displayMsg : '显示第{0}条到{1}条记录,一共{2}条记录',
emptyMsg : '没有记录'
// ,items:['-',new Ext.app.SearchField({store:userStore})]
})
});
var userGrid = new Ext.grid.GridPanel( {// 创建Grid表格组件
applyTo : 'user-grid-div',// 设置表格现实位置
frame : true,// 渲染表格面板
tbar : toolbar,// 设置顶端工具栏
stripeRows : true,// 显示斑马线
autoScroll : true,// 当数据查过表格宽度时,显示滚动条
store : userStore,// 设置表格对应的数据集
viewConfig : {// 自动充满表格
autoFill : true
},
sm : sm,// 设置表格复选框
cm : cm,// 设置表格的列
bbar : new Ext.PagingToolbar( {
pageSize : 25,
store : userStore,
displayInfo : true,
displayMsg : '显示第{0}条到{1}条记录,一共{2}条记录',
emptyMsg : '没有记录'
// ,items:['-',new Ext.app.SearchField({store:userStore})]
})
});
搜索控件不一定非要放在toolbar上,这个可以根据个人需要设定。
- Ext.ux.form.SearchField使用方法
- Ext.ux.form.SearchField使用方法
- Ext.ux.form.SearchField 应用,非简单的应用
- EXtjs 使用Ext.ux.form.SearchField 加入搜索框前后台实例
- Ext.ux.form.SearchField 添加placeholder属性 2016年9月19日
- ext.ux.form.lovcombo
- Extjs 解决MVC中 Ext.ux.SearchField 的问题
- Ext.ux.form.MultiSelect滚动条
- [4.x]Ext.ux.form.field.Month
- Ext.ux.itemselector 使用
- Ext.ux.data.DwrProxy
- (搜索框)Ext..app.SearchField的源代码和解释
- Ext.app.SearchField 与分页参数limit 的问题
- Ext.form.ComboBox 属性详解(见注释)及使用方法
- Ext.form.ComboBox使用方法介绍和级联使用
- Ext.form
- ext form
- Ext.form
- 《高性能网站建设指南》学习笔记——前端性能优化准则
- jboss-seam视频
- 解决Visual C++ 2008 Feature Pack Release安装失败的方法 —— 在VS2008简体中文版上安装TR1
- php 删除指定文件
- 二叉排序树专题
- Ext.ux.form.SearchField使用方法
- C语言中的多线程编程
- TWebBrowser访问IFrame
- 数据结构 - 返回单链表的中间结点
- 新华社-中国移动联手打造盘古搜索 2月22日上线
- Oracle中的数据字典技术简析
- 层内文字超出显示省略号[转]
- ICML的出版社问题
- c++中所有关键字的解释