(Ext基础篇) Ext表格控件

2023-11-16

              Ext中的表格功能非常强大,包括排序、缓存、拖动、隐藏某一行、自动显示行号、列汇总、单元格编辑等实用功能。

              表格由类Ext.grid.GridPanel定义,继承自Panel,其xtype为Grid。在Ext中,表格控件Grid必须包含列定义信息,并指定表格的数据存储Store。表格的列信息由类Ext.grid.ColumnModel定义,而表格的数据存储器由Ext.data.store定义,数据存储器工具解析的数据不同,可分为:jsonStore、SimpleStore、GroupStore。

          

(1)制作一个简单的Grid

1.1在Ext中。列的定义叫做columModel,cm是它的简称,它作用整个表格的列模式,是应该首先创建的

     在这里,我们创建一个包含3列的Grid,代码如下:

	var cm = new Ext.grid.ColumnModel([

			{
				header : '编号',
				dataIndex : 'id'
			}, {
				header : '名称',
				dataIndex : 'name'
			}, {
				header : '描述',
				dataIndex : 'descn'
			}

			]);
			


 var cm = new Ext.grid.ColumnModel([                   var cm=new Ext.grid.ColumnModel(.........)负责创建表格信息。表格包含的列由column配置属性来描述,简称cm。column是一个数组,每一行数据元素描述表格的一行信息,表格的列信息包含首部显示文本(header)、列对应的记录字段(dataindex)、列是否可以排序(sortable)、列的渲染函数(renderer)、宽度(width)、格式化信息(format)等。

       

		var store=new Ext.data.Store({
			proxy:new Ext.data.MemoryProxy(data),
			reader:new Ext.data.ArrayReader({},[
			{name:'id'},
			{name:'name'},
			{name:'descn'}
			])			
			});
			store.load();


                 var store=.......用来创建一个数据存储对象,这也是GridPanel必须配置的属性,数据存储对象store负责把各种各样的原始数据(二维数组、json对象数组、xml文本)转化Ext.dataRecord类型的对象。通过Ext.data.Store,我们可以把任何格式数据转化成Grid可以使用的形式,这样就不需要为每种数据格式写一个对应的实现。

                store对应两个部分:proxy和reader。proxy是指获取数据的方式,reader是指如何解析这一堆数据。这里我们使用的是Ext.data.MemoryProxy,它是专门用来解析javascript变量的在定义MemoryProxy对象时,只需要把上面定义的data作为参数传递进去即可。

                Ext.data.ArrayReader专门解析数组,并且告诉我们它会按照定义的规范进行解析。

 

   Grid常用功能详解:

  默认情况下:Grid可以拖放列,也可以改变列的宽度。如果想禁用这两个功能,在定义Grid对象时分别设置enableColumnMove和enableColumnResize为false即可。

                        Grid显示斑马线效果,在定义Grid对象时设置stripeRow 为true.

                       Grid 支持一种读取数据时的遮罩和提示功能,设置属性loadMask 为true ,在store.load()完成之前会一直显示"Loading"

 

                        Grid 自主决定每列宽度:cm 支持给每列设置宽度,如果不设置列的宽度,它会取一个默认值,默认的宽度是100px.

                         如果想让每列自动填满Grid,只需要viewConfig中的forceFit即可。

                         Grid支持按列排序,只需要在定义列模式时增加sortable属性。

                         Grid支持中文排序,只需要在定义的Store设置sortInfo属性。

自动显示行号和复选框

                 实际上行号和复选框都是renderer的延伸。当然,复选框的功能要负责得多,两者经常一起使用,所以我们一起讨论。

                 自动显示行号:添加ColumnModle添加Ext.grid.RowNumberer对象。
                 复选框:添加ColumnModle添加Ext.grid.CheckboxSelectionModle对象。

		var cm = new Ext.grid.ColumnModel([
			//显示行号
			new Ext.grid.RowNumberer(),
			//显示复选框
			new Ext.grid.CheckboxSelectionModel(),
			{
				header : '编号',
				dataIndex : 'id'
			}, {
				header : '名称',
				dataIndex : 'name'
			}, {
				header : '描述',
				dataIndex : 'descn'
			}

			]);


 

选择模式

             在定义Ext.grid.GridPanel时,默认使用RowSelectionModel——行选择模式。行选择模式默认是支持多选,鼠标单击是按住Shirt或Ctrl键就可以选择多行,如果只希望选择一行,需要设置singleSelect参数

             在定义Ext.grid.GridPanel的另外一种模式CellSelectionModel——单元格模式。每次只允许选择一个单元格,在EditGrid里默认使用的就是CellSelectionModle模式

 

点击Grid获取对应的行数据代码

      

<html>
<head>
<title>ExtJs HelloWorld</title>
<link rel="stylesheet" type="text/css" href="extjs/ext-all.css"/>
<script src="extjs/ext-base.js"></script>
<script src="extjs/ext-all-debug.js"></script>
<script>
		Ext.onReady(function(){
    


			var cm = new Ext.grid.ColumnModel([
			//显示行号
			new Ext.grid.RowNumberer(),
			//显示复选框
			new Ext.grid.CheckboxSelectionModel(),
			{
				header : '编号',
				dataIndex : 'id'
			}, {
				header : '名称',
				dataIndex : 'name'
			}, {
				header : '描述',
				dataIndex : 'descn'
			}

			]);
			
			
			var data=[
			['1','1','1'],
			['2','2','2'],
			['3','3','3']
			];
			
			
			var store=new Ext.data.Store({
			proxy:new Ext.data.MemoryProxy(data),
			reader:new Ext.data.ArrayReader({},[
			{name:'id'},
			{name:'name'},
			{name:'descn'}
			])			
			});
			store.load();
			
			var grid=new Ext.grid.GridPanel({
			renderTo:'grid',
			store:store,
			cm:cm,
			//行选择模式---单行设置参数(默认是多行设置)
			sm:new Ext.grid.RowSelectionModel({singleSelect:true}),
			viewConfig:{
				forceFit:true
			}
			})

			//获取选择行的相关数据信息
			grid.on('click',function(){
			var selections=grid.getSelectionModel().getSelections();
			for(var i=0;i<selections.length;i++){
				var record=selections[i];
				alert('相关数据信息:'+record.get("id")+record.get("name"));
			}
			});
		
		});
     </script>
   </head>
   <body>
   <div id="grid"></div>   
   </body>
   </html>


 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

(Ext基础篇) Ext表格控件 的相关文章

  • python 美国总统身高统计与分析

    美国总统身高统计与分析 1 安装依赖 2 下载数据集 3 数据处理 4 结果展示 1 安装依赖 pip install pandas pip install numpy pip install matplotlib 2 下载数据集 链接 h
  • PHICOMM路由器无线扩展的设置方法(吐槽一下)

    家里使用的是电信宽带 电信光纤猫有两个网口 网口1直连家里的电视 网口2连接了一部TPLINK路由器 设置了无线wifi 供家里的手机使用wifi 最近在卧室新增了一台台式电脑 用来在家里业余时间学习的 从客厅到卧室距离不长 但是因为家里面
  • 了解以及区分物理机,虚拟机(hypervisor/VMM) 和 容器(Docker)的适用场景

    了解以及区分物理机 虚拟机hypervisor VMM 和 容器Docker的适用场景 Abbreviations 物理机和虚拟机以及容器的区别 动机motivation 为什么要有虚拟机 物理机 虚拟机 容器 虚拟机的种类以及他们的本质区
  • 【Eigen】基本和常用函数

    文章目录 简介 找不到头文件 Eigen 中矩阵的定义 Eigen 中矩阵的使用方法 Eigen 中常用矩阵生成 Eigen 中矩阵分块 Eigen 中矩阵元素交换 Eigen 中矩阵转置 Eigen 中矩阵乘积 Eigen 中矩阵元素操作
  • Selenium自动化测试 —— 通过cookie绕过验证码的操作!

    验证码的处理 对于web应用 很多地方比如登录 发帖都需要输入验证码 类型也多种多样 登录 核心操作过程中 系统会产生随机的验证码图片 进行验证才能进行后续操作 解决验证码的方法如下 1 开发做个万能验证码 推荐 2 测试环境关闭验证码功能
  • Appium+Python自动化测试(一)--环境搭建

    Appium简介 Appium是一个自动化测试开源工具 支持IOS和Android平台上的移动原生应用 移动Web应用和混合应用 所谓的 移动原生应用 是指那些用IOS或者Android SDK写的应用 所谓的 移动Web应用 是指使用移动
  • VulnHub_Jangow: 1.0.1

    本文内容涉及程序 技术原理可能带有攻击性 仅用于安全研究和教学使用 务必在模拟环境下进行实验 请勿将其用于其他用途 因此造成的后果自行承担 如有违反国家法律则自行承担全部法律责任 与作者及分享者无关 主机信息 kali 192 168 31
  • Mysql超时重连解决方案3: 配置c3p0连接池(终极方案)

    前面的文章中 我介绍了修改mysql默认超时时间和配置proxool连接池的方法来解决Mysql超时重连的问题 方案1不推荐 它并没有从根本上解决问题 方案2可用 但配置相对复杂 所有才有了方案3 它既解决了关键问题 并且配置简单易懂 c3
  • Retrofit源码解析三——对接口方法参数注解的处理

    private Nullable ParameterHandler result null if annotations null for Annotation annotation annotations 核心就是这一句 实际上就是把前面
  • Firefox意外的服务器响应,WebSockets的无法解决的“意外地得到了延续帧”错误(Websockets unresolva...

    我知道了 事实证明 我当初采用的代码放在一个NULL字符后的握手响应报头的新行后 我没有注意到这一点 它看起来像一个 浏览器移动所有所接收的WebSocket消息通过离开单个NULL字符在前一次的认证响应被处理的字符缓冲区 以及b 这不是一
  • 2020美赛E题解题思路方法:淹溺在塑料中

    自20世纪50年代以来 由于塑料的用途多种多样 如食品包装 消费品 医疗器械和建筑等 塑料制造业呈指数级增长 虽然有显著的好处 但与塑料产量增加有关的负面影响也受到关注 塑料制品不易分解 难以处理 只有大约9 的塑料被回收利用 1 每年大约
  • Git命令参考手册

    git init 初始化本地git仓库 创建新仓库 git config global user name xxx 配置用户名 git config global user email xxx xxx com 配置邮件 git config
  • [NOIP1998 普及组] 阶乘之和

    题目描述 用高精度计算出 S 1 2 3 n n 50 其中 表示阶乘 定义为 n n n 1 n 2 1 例如 5 5 4 3 2 1 120 输入格式 一个正整数 n 输出格式 一个正整数 S 表示计算结果 输入输出样例 输入 1 3
  • 华为机试题:HJ107 求解立方根(python)

    文章目录 1 题目描述 2 Python3实现 3 知识点详解 1 input 获取控制台 任意形式 的输入 输出均为字符串类型 1 1 input 与 list input 的区别 及其相互转换方法 2 print 打印输出 3 whil
  • MyBatis中Like模糊查询的几种写法和注意点

    目录 友情提醒 第一章 Mybatis中SQL语句的模糊查询 1 1 第一种方式 直接双引号拼接 1 2 第二种方式 数据库为MySQL时用CONCAT 函数 1 3 第三种方式 bind元素 友情提醒 先看文章目录 大致了解知识点结构 直
  • spring cloud alibaba 学习(三)Nacos-NacosNamingService初始化流程

    1 NacosServiceManager 的创建 Configuration proxyBeanMethods false ConditionalOnDiscoveryEnabled ConditionalOnNacosDiscovery

随机推荐

  • linux shell脚本

    微信可以设置雪花昵称了 真漂亮 一 Shell中有许多预定义的特殊字符 n n是一个数字 大于10则用大括号括起来 12 代表程序的第n个参数 总共有多少个参数 指所有的参数 指所有的参数 上次命令执行的返回值 注意 我们发现 和 的意思是
  • 计算机网络-04 网络路由

    第四讲 网络路由 给每次数据传输确定一个端到端的路径 通常是找到两点之间的最小代价路径 保存在路由器的转发表FIB中 基于分布式计算 网络模型用无向图表示 节点是网络设备 路由器 节点间链路是带权重的边 权重即链路开销 可以是延迟 拥塞程度
  • PHP: 深入pack/unpack

    PHP作为一门为web而生的服务器端开发语言 被越来越多的公司所采用 其中不乏大公司 如腾迅 盛大 淘米 新浪等 在对性能要求比较高的项目中 PHP也逐渐演变成一门前端语言 用于访问后端接口 或者不同项目之间需要共享数据的时候 通常可以抽取
  • 外部中断库函数

    外部中断 STM32外部中断简介 GPIO 跟中断线的映射关系 主函数讲解 外部中断初始化函数 STM32外部中断简介 STM32 的每个 IO 都可以作为外部 中断的中断输入口 这点也是 STM32 的强大之处 STM32F103 的中断
  • selenium浏览器驱动下载

    Chrome谷歌浏览器 下载地址 http chromedriver storage googleapis com index html 不同的Chrome的版本对应的chromedriver exe 版本也不一样 下载时不要搞错了 如果是
  • 升压BOOST电路和降压BUCK电路最容易的理解

    升压电路框图 首先在了解BOOST电路时 要学会如何分析最简单的升压电路框图 如图 首先识别每个元件基本功能 电感 储能i电感 MOS管 开关作用 二极管 续流 电容 储能电容 了解升压电路的原理 要明白Vout和Vin的差别 所以我们从V
  • Centos 7 - Anaconda3 安装教程及报错集锦 - 取消自动激活 base 环境方法

    目录 序言 1 报错 WARNING cannot verify mirrors tuna tsinghua edu cn s certificate issued by C US O Let s Encrypt CN R3 Issued
  • 人工智能之深度学习-初始环境搭建(安装Anaconda3和TensorFlow2步骤详解)

    Python微信订餐小程序课程视频 https edu csdn net course detail 36074 Python实战量化交易理财系统 https edu csdn net course detail 35475 前言 本篇文章
  • ubuntu16.04 编译ARM平台qt5.12.3

    环境 系统 ubuntu16 04 开发板 IMAX8 IMAX8交叉编译工具aarch64 linux gnu 编译步骤 1 配置交叉编译环境 sudo gedit etc bash bashrc 在最后一行加入交叉编译工具的bin目录
  • TypeScript 快速入门

    目录 第一章 快速入门 0 TypeScript简介 1 TypeScript 开发环境搭建 2 基本类型 3 编译选项 4 webpack 5 Babel 第一章 快速入门 0 TypeScript简介 TypeScript是JavaSc
  • 整数类型

    C 中提供的整数类型有三种 int long short 每种类型又分为有符号和无符号两种类型 有符号整数既可以表示非负整数 又可以表示负整数 但是 无符号整数不能表示负数 只能表示非负整数 一 无符号整数 在内存中 int整数通常占4字节
  • NFC----PN532

    一 PN532简介 1 1 PN532由NXP出品 是一款高度集成的载波的13 56MHz传输模块 基于80C51内核有40KROM 1KRAM 使用不同的固件支持13 56MHz频段的无线协议 硬件接口 I2C SPI 高速UART HS
  • 网络阶段总结

    网络阶段总结 1 网络访问常用代码格式 NSURL url nil NSURLRequest requst NSURLRequest requestWithURL url cachePolicy 0 timeoutInterval 10 0
  • 机器学习算法学习一--------学习链接

    1 这个github是java的机器学习算法 对于我这个java程序员来说 挺不错的点击打开链接 2 这个博客基础理论不错点击打开链接
  • -bash: cannot create temp file for here-document: No space left on device

    1 现象 登陆Linux系统后 cd 到某个指定目录时使用tab键的时候报以下错误 bash cannot create temp file for here document No space left on device 2 原因 不能
  • Vue项目中使用el-form校验用户输入字段是否符合条件验证-demo

    实现效果 实现 div class registerWarp div
  • [分割一切!] SegmentAnything真的太强了

    相信大家最近都听说了Meta开源了一个图像分割模型 SegmentAnything Model 简称SAM模型 号称分割一切 在短短开源的一周内 截止今天Github已经24k的star了 看了很多推文各种炸裂的词都出来了 最近也是体验了一
  • python 安装 并运行 uwsgi

    安装 pip install uwsgi 虚拟环境下执行uwsgi uwsgi socket tmp test sock w var pyproject ci env test py 运行成功 则安装成功 创建ini文件 var pypro
  • mac升级catalina后CoreFoundation.h not found的问题处理

    mac升级catalina之后问题贼多 原来跑的顺利的项目出了一堆问题 把这个问题的解决过程转发一下 供大家参考吧 https cloud tencent com developer article 1629899
  • (Ext基础篇) Ext表格控件

    Ext中的表格功能非常强大 包括排序 缓存 拖动 隐藏某一行 自动显示行号 列汇总 单元格编辑等实用功能 表格由类Ext grid GridPanel定义 继承自Panel 其xtype为Grid 在Ext中 表格控件Grid必须包含列定义