/**
* 键盘控制翻页
* @example 控制键 按 "左" 或 "Page Up" 翻至 上一页
* @example 控制键 按 "右" 或 "Page Down" 翻至 下一页
* @example 控制键 按 "Home" 翻至 首页
* @example 控制键 按 "End" 翻至 尾页
*
* @example !注
* <p>1.在当前 store 增加 load 事件
* <p>例:
* <p>store.on('load',function(){
* <p> if(store.getCount()>0){
* <p> grid.getSelectionModel().selectFirstRow();//首行被选
* <p> grid.getView().focusRow(0);//焦点定位
* <p> }
* <p>});
* <p>2.在当前 grid 增加 keydown 事件
* <p>例:
* <p>grid.on('keydown',function(e){
* <p> e.stopEvent();
* <p> var thisPagingToolbar = Ext.getCmp('PagingToolbar的ID');
* <p> PagingToolbar_KeyEvent(thisPagingToolbar,e);
* <p>});
* @param {} thisPagingToolbar
* @param {} e
*/
function PagingToolbar_KeyEvent(thisPagingToolbar,e){
if((e.getKey()==Ext.EventObject.LEFT) || (e.getKey()==Ext.EventObject.PAGE_UP) ){
if(thisPagingToolbar.readPage()!=1)
thisPagingToolbar.movePrevious();
}
if((e.getKey()==Ext.EventObject.RIGHT) || (e.getKey()==Ext.EventObject.PAGE_DOWN)){
if(thisPagingToolbar.readPage()!=thisPagingToolbar.getPageData().pages)
thisPagingToolbar.moveNext();
}
if(e.getKey()==Ext.EventObject.HOME){
if(thisPagingToolbar.readPage()!=1)
thisPagingToolbar.moveFirst();
}
if(e.getKey()==Ext.EventObject.END){
if(thisPagingToolbar.readPage()!=thisPagingToolbar.getPageData().pages)
thisPagingToolbar.moveLast();
}
}
//运行实例
var customerTypesDataStore = new Ext.data.Store({
proxy:new Ext.data.HttpProxy({
url:'./customerType/list.tc'
}),
reader:new Ext.data.JsonReader(
{root:"Records",totalProperty:"RecordCount"},
[
{name : 'CustomerTypeCode',type : 'int'},
{name : 'CustomerTypeName',type : 'string'},
{name : 'ReCounts',type : 'int'}
]
)
});
customerTypesDataStore.on('beforeload', function() {
customerTypesDataStore.removeAll();
this.baseParams = {
searchText:customerTypesGridPanel.SearchField.getValue()
};
});
customerTypesDataStore.on('load',function(){
if(customerTypesDataStore.getCount()>0){
customerTypesGridPanel.getSelectionModel().selectFirstRow();
customerTypesGridPanel.getView().focusRow(0);
}
});
var customerTypes_grid = Ext.grid;
var customerTypes_grid_PageSize = 20;
function customerTypesDataStore_load(){
customerTypesDataStore.load({params:{start:0,limit:customerTypes_grid_PageSize}});
}
var customerTypesGridPanel = new customerTypes_grid.GridPanel({
store:customerTypesDataStore,//数据源定义
loadMask : {
msg : '数据加载中...'
},
cm: new customerTypes_grid.ColumnModel([
new customerTypes_grid.RowNumberer(),
{header:'问题类型编码', dataIndex:'CustomerTypeCode',width:80},
{header:'问题类型名称', dataIndex:'CustomerTypeName'},
{header:'统计次数', dataIndex:'ReCounts'}
]),
viewConfig: {
forceFit:true
},
columnLines: true,
region:'center',
iconCls:'icon-grid',
tbar: [
new Ext.form.TextField({
ref:'../SearchField',
emptyText:'请输入 问题类型编码 / 问题类型名称',
width:500
,selectOnFocus:true
,enableKeyEvents:true
,listeners:{
specialkey:function(field,e){
if (e.getKey()==Ext.EventObject.ENTER){
e.stopEvent();
customerTypesDataStore_load();
}
}
}
}),{
text:'查找',
tooltip:'查找',
iconCls:'search',
handler:function(){
customerTypesDataStore_load();
}
}
],
bbar: new Ext.PagingToolbar({
id:'customerTypesGridPanel_paging',//设置分页组件ID
pageSize: customerTypes_grid_PageSize,
store: customerTypesDataStore,
displayInfo: true,
displayMsg: '当前 第{0}-{1} 条 / 共 {2} 条',
emptyMsg: "没有数据"
}),
sm: new customerTypes_grid.RowSelectionModel({
singleSelect:true,
}),
listeners:{
'keydown':function(e){
e.stopEvent();
PagingToolbar_KeyEvent(Ext.getCmp('customerTypesGridPanel_paging'),e);
//通过ID获取 要控制的组件
}
}
});
分享到:
相关推荐
在EXTJS这个强大的JavaScript框架中,`Ext.Panel`和`TreePanel`是两个非常重要的组件,它们被广泛用于构建复杂的用户界面。这篇文章将探讨如何在这些组件中动态加载本地页面数据,以提升用户体验并实现灵活的数据...
在EXTJS框架中,`Ext.ux.form.LovCombo`是一种自定义组件,它扩展了基本的`Ext.form.field.ComboBox`,提供了更丰富的功能,尤其是针对多选和联动选择的需求。这个组件通常用于创建具有“lov”(即“Look Up Value”...
在使用ExtJs开发Web应用程序时,实现用户在进行耗时的Ajax请求时的等待提示效果是一个常见的需求。ExtJs提供了Ext.Ajax.request方法来进行Ajax请求,但默认情况下,该方法不支持waitMsg属性,不像fp.form.submit方法...
### ExtJS ToolTip功能 #### 知识点详解 在ExtJS中,`ToolTip`功能是一种非常实用且灵活的功能,它允许用户在鼠标悬停在某个元素上时显示额外的信息。这种特性对于提高用户界面的可用性和用户体验尤其有用。本文将...
在EXTJS中,PagingToolbar 是一个非常实用的组件,用于在大数据集上实现分页显示,提升用户体验。然而,在实际使用过程中,我们可能会遇到一些问题,比如在点击“下一页”按钮时,加载的数据与预设的查询条件不符。...
参考: Ext.PagingToolbar.js 如有BUG还请各位提出或留言. 附件中有图片, 一看就知道. 用法: var grid = new Ext.grid.GridPanel({ bbar: new Ext.PM3PagingToolbar({ store : store, displayInfo : true, ...
在ExtJS 4.x框架中,ComboboxTree是一种特殊的组件,它将传统的下拉框与树形结构结合在一起,提供了一种更为灵活的用户输入方式。这种组件在数据选择上非常实用,尤其当数据层级关系复杂时,可以方便地进行多选或...
关于这个原因有很多种,我只说下我遇到的 我这样 写Store来复用的 代码如下: DocStore = Ext.extend(Ext.data.Store,{ initComponent:function(){ this.proxy = new Ext.data.HttpProxy({url:this.url}); this....
在EXTjs中,使用UploadDialog组件需要引入相关的JS和CSS资源,并在EXT应用中实例化。开发者可以通过EXT的API文档学习如何配置和使用UploadDialog,包括添加按钮、监听事件、设置参数等。对于初次接触EXTjs ...
在EXTJS库中,`Ext.Ajax.request`是用于发送Ajax请求的核心方法,它支持异步和同步操作。本文将详细解析如何利用`Ext.Ajax.request`实现同步请求,并探讨其背后的原理和注意事项。 首先,我们需要理解Ajax的本质,...
在Ext JS这个强大的JavaScript框架中,开发者经常使用各种组件来构建富客户端应用,其中包括TextField(文本字段)和DatePicker(日期选择器)。有时,我们可能需要根据应用需求在运行时禁用这些组件的编辑功能,...
在阅读《Ext_Core手册.pdf》时,可以深入研究EXTJS的核心概念和API,了解更多关于`Ext.get`和`Ext.fly`的底层实现以及它们在不同场景下的应用策略。同时,理解EXTJS中的`Element`类和DOM操作对于提升EXTJS应用的性能...
在IT行业中,跨域是Web开发中一个常见的挑战。...通过理解和运用CORS,我们可以利用Ext.Ajax.request在ExtJS应用中安全地进行跨域通信。同时,深入研究`domain.js`文件将有助于我们掌握具体实现细节。
ExtJS是一个流行的JavaScript库,专用于构建富客户端应用程序。它提供了丰富的组件库,包括表格、表单、树形视图等。在4.0版本中,ExtJS对RowEditing插件进行了重大改善,以提供更好的数据编辑体验。RowEditing插件...
在3.4.0版本中,`ext.jsb2` 文件是一个关键组成部分,它对于理解和开发基于ExtJS的应用程序至关重要。这个文件的缺失可能会对升级到4.0.0版本的开发者造成困扰,因为4.0.0版本不再包含这个文件,但幸运的是,它可以...
主要用例子说明extjs4的form表单的运用,其中有表单属性说明,表单控件运用说明如: title:'表单', //表单标题 bodyStyle:'padding:5 5 5 5', //表单边距 height:120, //表单高度 width:200, //表单宽度 ...
Ext.MessageBox.confirm()详解 显示一个确认对话框,用来代替JavaScript标准的confirm()方法,具有两个按钮“是”和“否”如果为其提供一个回调函数,则该函数将在单击按钮后被调用(包括右上角的...
### ExtJs选中 `var editor = new Ext.ux.grid.RowEditor` 详解 在Web开发领域,特别是使用ExtJs框架进行复杂用户界面构建时,`RowEditor` 是一个非常实用的功能,它允许用户直接在表格行内编辑数据,极大地提高了...
首先,`ExtJS`(全称为EXT JavaScript Library)是由Sencha公司开发的一个强大的JavaScript框架,用于构建桌面和移动Web应用。它提供了丰富的组件库,包括表格、面板、窗口、菜单等,帮助开发者快速构建用户界面。 ...