Extjs4 GridPanel核心配置参数详解
ExtJS 4 的表格组件(GridPanel)是数据展示的利器,但刚接触时,面对琳琅满目的配置项和方法,难免有点懵。别急,咱们逐个拆解,把这些配置项和方法的“脾气”摸清楚,以后用起来就顺手多了。 1、Ext grid GridPanel GridPanel 是整个表格的“容器”,所有的数据、列、选
ExtJS 4 的表格组件(GridPanel)是数据展示的利器,但刚接触时,面对琳琅满目的配置项和方法,难免有点懵。别急,咱们逐个拆解,把这些配置项和方法的“脾气”摸清楚,以后用起来就顺手多了。
1、Ext.grid.GridPanel
GridPanel 是整个表格的“容器”,所有的数据、列、选择行为都靠它来组织。先说说它的核心配置项:
- store:数据源,表格要展示的数据都放在这里。
- columns:列配置数组,定义每一列怎么显示,自动创建列模型(ColumnModel)。
- autoExpandColumn:自动撑满剩余空间的列,指定列的 id 即可(注意:id 不能为 0)。
- stripeRows:是否隔行变色,默认 false,设成 true 后视觉上更清晰。
- cm、colModel:列模式对象,渲染表格时必须设置。
- sm、selModel:选择模式,默认是 RowSelectionModel(行选择)。
- enableHdMenu:是否显示表头右键菜单,默认 true。
- enableColumnHide:是否允许通过表头菜单隐藏列,默认 true。
- loadMask:加载数据时是否显示遮罩,默认 false。
- view:表格视图对象,默认 GridView。
- viewConfig:视图的配置对象。
- autoExpandMax / autoExpandMin:自动扩充列的最大/最小宽度,默认 1000 和 50。
- columnLines:是否显示列分割线,默认 false。
- disableSelection:是否禁止行选择,默认 false。
- enableColumnMove / enableColumnResize:是否允许拖拽移动列或改变列宽,默认都 true。
- hideHeaders:是否隐藏表头,默认 false。
- maxHeight:表格最大高度。
- minColumnWidth:最小列宽,默认 25。
- trackMouseOver:鼠标悬停时是否高亮所在行,默认 true。
再说几个常用的方法:
- getColumnModel() 获取列模式
- getSelectionModel() 获取选择模式
- getStore() 获取数据集
- getView() 获取视图对象
- reconfigure(store, colModel) 用新的数据集和列模式重新配置表格
2、Ext.grid.Column
Column 定义的是每一列的细节行为,配置项不少,但理解后很好掌握:
- id:列的唯一标识
- header:表头显示的文字
- dataIndex:与数据集中字段对应的名称。如果不设置,则按列索引匹配字段索引。
- width:列宽
- align:数据对齐方式
- hidden:是否隐藏列,默认 false
- fixed:是否固定列宽,禁止调整,默认 false
- menuDisabled:是否禁用列右键菜单,默认 false
- resizable:是否允许改变列宽,默认 true
- sortable:是否允许排序,默认 true
- renderer:自定义单元格渲染函数,这是最灵活的地方。函数接收这些参数:
-value:原始数据值
-metadata:元数据对象,包含css(样式类名)和attr(HTML 属性字符串)
-record:当前数据记录对象
-rowIndex/colIndex:行/列索引
-store:数据集对象 - xtype:列的渲染器类型,默认
gridcolumn,可选booleancolumn、numbercolumn、datecolumn、templatecolumn等 - editable:是否可编辑,默认 true
- editor:编辑器配置
- groupName / emptyGroupText / groupable:分组相关配置
3、Ext.grid.ColumnModel
ColumnModel 管理所有列的定义,是个“列管家”。主要配置项:
- columns:列字段数组
- defaultSortable:是否允许默认排序,默认 false
- defaultWidth:默认列宽
它的方法主要是各种“取”和“设”的操作:
- findColumnIndex(col):根据 dataIndex 查找列索引
- getColumnById(id):根据 id 获取列
- getColumnCount(visibleOnly):获取列总数
- getColumnHeader(col) / getColumnId(index) / getDataIndex(col) / getIndexById(id) 等
- getTotalWidth(includeHidden):总宽度
- isCellEditable(colIndex, rowIndex) / isFixed() / isHidden(colIndex):判断状态
- setColumnHeader / setColumnWidth / setDataIndex / setEditable / setEditor / setHidden / setRenderer:动态修改列属性
4、Ext.grid.AbstractSelectionModel
选择模型的基类,提供了锁定/解锁选择区域的能力:
- lock() 锁定选择
- unlock() 解锁
- isLocked() 判断是否锁定
5、Ext.grid.CellSelectionModel
单元格级别的选择模型,用的场景相对少,但有时候很关键:
- clearSelections(preventNotify):清除选择
- getSelectedCell():返回 [rowIndex, colIndex] 数组
- hasSelection():是否有选择
- select(rowIndex, colIndex, preventViewNotify, preventFocus, r):选择指定单元格
6、Ext.grid.RowSelectionModel
行选择模型,最常用。支持单选和多选:
- singleSelect:是否单选,默认 false(多选)
- clearSelections(fast):清除所有选择
- deselectRange(startRow, endRow) / deselectRow(row, preventViewNotify):取消选择
- each(fn, scope):遍历所有选中行,每行记录传入回调
- getCount():选中行数
- getSelected() / getSelections():获取选中记录
- hasNext() / hasPrevious():判断当前选中行前后是否还有记录可切换
- hasSelection():是否已选
- isIdSelected(id):判断某 id 的记录是否被选
- isSelected(index):判断某索引或记录是否被选
- selectAll() / selectFirstRow() / selectLastRow(keepExisting) / selectNext(keepExisting) / selectPrevious(keepExisting):各种选中操作
- selectRange(startRow, endRow, keepExisting):选中范围内的行
- selectRecords(records, keepExisting):选中指定记录数组
- selectRow(row, keepExisting, preventViewNotify):选中单行
- selectRows(rows, keepExisting):选中多行
7、Ext.grid.CheckboxSelectionModel
带复选框的选择模型,多了个 checkOnly 配置:
- singleSelect:是否单选,默认 false
- checkOnly:是否只能通过点击复选框来选择,默认 false
- sortable:复选框列是否可排序,默认 false
- width:复选框列的宽度,默认 20
8、Ext.grid.RowNumberer
行号列,就是给每行加个序号:
- header:表头文字
- width:列宽,默认 23
9、Ext.grid.GridView
GridView 是表格的“皮肤”,负责渲染和布局:
- enableRowBody:是否启用行体(可插入额外内容)
- sortAscText / sortDescText / columnsText:表头菜单中的文字
- autoFill:是否自动扩张列充满表格,默认 false
- forceFit:是否强制适应宽度防止水平滚动,默认 false
常用方法:
- focusCell(row, col):焦点移到指定单元格
- focusRow(row):焦点移到指定行
- getCell(row, col):获取单元格的 td 元素
- getHeaderCell(index):获取表头 td 元素
- getRow(index):获取行 tr 元素
- getRowClass(record, index, rowParams, store):返回行样式名,
rowParams在开启enableRowBody时可用,包含body(HTML)、bodyStyle、cols(colspan) - refresh(headersToo):刷新表格
- scrollToTop():滚动到顶部
实战技巧
两个常用场景:
1. 让滚动条自动滚到最后一行(动态插入数据后)
一行代码搞定:
grid.getView().focusRow(grid.getStore().getCount() - 1);
2. 清除行的选中状态
调用选择模型的清除方法:
grid.getSelectionModel().clearSelections();
掌握了这些配置和方法的用途,ExtJS 表格面板基本就玩转了。剩下的就是多动手,在实践中慢慢体会它们之间的协作关系。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
DCloud平台选型指南 适用场景与核心差异详解
DCloud是一个围绕跨平台开发与流应用构建的技术生态,旨在帮助前端开发者使用Web技术开发高性能移动应用。其核心产品包括集成开发环境HBuilderX和基于Vue js的uni-app框架,支持一套代码发布至iOS、Android、Web及多端小程序。相比ReactNative和Flutter,uni-app在多端覆盖和Vue技术栈学习成本上具有优势,适合
DCloud使用教程与常见问题解决方案详解
DCloud提供跨平台应用开发方案,核心为HBuilderX与uni-app框架。开发者使用Vue js语法编写代码,可编译发布至iOS、Android、Web及小程序等多端。流程涵盖项目创建、开发调试与真机预览。常见问题如设备识别、编译失败等可通过检查设置、查看日志与条件编译解决。应用完成后支持云打包生成安装包。
DCloud新手入门教程 从零开始快速掌握开发技巧
DCloud是一个基于Web技术的跨平台应用开发平台,允许开发者使用HTML5等语言编写代码,并编译为iOS、Android及小程序应用,实现“一次编写,多端发布”。开发需使用HBuilderX,基于Vue js进行页面开发,平台提供丰富组件与API,并支持插件市场扩展功能。
DCloud新手入门指南从零开始了解这个开发平台
DCloud是一个移动应用开发平台,旨在帮助前端开发者使用Web技术高效开发性能接近原生的跨平台应用。其核心产品包括HBuilderX开发环境和基于Vue js的uni-app框架,可实现一次开发、多端发布。平台通过完整工具链和插件生态降低开发门槛,适合需要快速迭代、覆盖多端的应用场景。
Zepto实战项目优化技巧与应用场景详解
Zepto js作为轻量级JavaScript库,专为移动端优化,体积仅约10KB。它支持模块化定制,可按需构建以减小体积。使用时需减少DOM操作、善用事件委托,并可混合原生API提升性能。Zepto能融入现代工程流,但需注意其与jQuery的API差异及兼容性限制,适合在移动端性能优先的场景中替代jQuery。
- 热门数据榜
相关攻略
2026-07-10 06:47
2026-07-10 06:47
2026-07-10 06:47
2026-07-10 06:47
2026-07-10 06:47
2026-07-10 06:46
2026-07-10 06:46
2026-07-10 06:46
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

