extjs 之Ext.data.Store[Grid]操作(增删)

简介:
Ext.data.Store是extjs的数据结构。
主要用于extjs的grid和combobox等控件的数据加载和操作。实际上对grid的增删改可以通过对store的操作来控制.
例子:对grid的增删操作
A.增加一条记录
1. 首先需要定义每条record的结构,这点很重要,方便后面对记录的操作。也是很好的编程习惯
machine_record = Ext.data.Record.create([{
name : 'id',
type : 'int'
}, {
name : 'ip',
type : 'string'
}, {
name : 'env',
type : 'string'
}, {
name : 'owner',
type : 'string'
}, {
name : 'memer',
type : 'string'
}, {
name : 'cpu',
type : 'string'
}, {
name : 'disk',
type : 'string'
}, {
name : 'type',
type : 'string'
}]);
 
2. 定义data.store本身,说明使用的是machine_record结构,同时声明从服务器后台那个serverlet取得数据
//{"root":[{"start":0,"limit":0,"cpu":"23","memer":"2","disk":"dffe","ip":"10.250.194347","env":"0","id":1,"type":"2","owner":"elbert"},{"start":0,"limit":0,"cpu":"er","memer":"er","disk":"re","ip":"sdf","env":"er","id":12,"type":"虚拟机","owner":"re"},{"start":0,"limit":0,"cpu":"34","memer":"4","disk":"34","ip":"23","env":"34","id":18,"type":"虚拟机","owner":"34"},{"start":0,"limit":0,"cpu":"1g","memer":"2g","disk":"10g","ip":"10.250.194.47","env":"旺旺服务器端测试1","id":19,"type":"虚拟机","owner":"陈洪"}],"totalCount":10}
以上是例子取得的数据源
machine_list_grid_store = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'GetMachineList', //说明后台的serverlet
method : 'POST'
}),
reader : new Ext.data.JsonReader({
root : "root",
id : 'machine_list_grid_store',
totalProperty : 'totalCount'
}, machine_record) //说明数据结构
});

 
3.grid控件绑定该data.store
var machine_list_grid = new Ext.grid.GridPanel({
store : machine_list_grid_store, //关键代码
animate : true,
columnLines : true,
region : 'south',
height : Glb.outer_center.getHeight() * 0.6,
tbar : [p_buttons],
split : true,
columns : [{
id : 'id',
header : "id",
width : 60,
sortable : true,
dataIndex : 'id'
}, {
id : 'ip',
header : "机器ip",
width : 120,
sortable : true,
dataIndex : 'ip'
}, {
id : 'cpu',
header : "cpu",
width : 80,
sortable : true,
dataIndex : 'cpu'
}, {
id : 'memer',
header : "内存",
width : 80,
sortable : true,
dataIndex : 'memer',
hidden : true
}, {
id : 'disk',
header : "硬盘",
width : 80,
sortable : true,
dataIndex : 'disk'
}, {
id : 'env',
header : "环境",
width : 120,
sortable : true,
dataIndex : 'env'
}, {
id : 'owner',
header : "归属人",
width : 120,
sortable : true,
dataIndex : 'owner'
}, {
id : 'type',
header : "类型",
width : 80,
sortable : true,
dataIndex : 'type'
}],
region : 'south',
bbar : new Ext.PagingToolbar({
pageSize : 10,
store : machine_list_grid_store,
displayInfo : true,
displayMsg : '显示 {0} - {1} /共 {2}条记录',
emptyMsg : "没有记录"
})
});
 
4.对data.store进行新增记录操作,由于定义了record的结构,所以很方便的进行new,并进行add record的操作,这时候grid也会自然添加一条记录
function insert_machine_grid_row(id, ip, env, owner, memer, cpu, disk, type) {
var record = new machine_record({
id : id,
ip : ip,
env : env,
owner : owner,
memer : memer,
cpu : cpu,
disk : disk,
type : type
});
machine_list_grid_store.add(record);
}
 
B.删除一条记录
1.首先要取得记录的index,可以通过grid的click事件取得,那么就要实现添加click事件
machine_list_grid.addListener('rowclick', machine_list_grid_rowclick);
function machine_list_grid_rowclick(grid, rowIndex, columnIndex, e) {
g_machine_rowIndex = rowIndex;
}
 
2. 取得选中的record,代码如下
var x = machine_list_grid_store.getAt(g_machine_rowIndex);
 

 
3. 直接删除记录
machine_list_grid_store.remove(x);
4.第三步也可以通过后台先删除数据库数据,然后machine_list_grid_store.reload()的方式来变更grid的显示效果。


本文转自elbertchen 51CTO博客,原文链接:http://blog.51cto.com/linkyou/751881,如需转载请自行联系原作者
相关文章
|
存储 安全 网络协议
阿里云SSL数字证书原理、使用、申请流程及部署方式
本文带您了解阿里云数字证书的基本原理、使用、申请流程及部署方式
查看 npm 包下载量(简单快捷,数据精确)
查看 npm 包下载量(简单快捷,数据精确)
1148 0
|
Java 定位技术 API
标准坐标系与火星坐标系(高德)百度坐标系之间互转
这里先给大家介绍几个坐标系: 1.WGS84:国际坐标系,为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。2.GCJ02:火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。
4314 0
|
Web App开发 安全 Windows
解决:对COM 组件的调用返回了错误 HRESULT E_FAIL
  调用SHDOCVW(web浏览器) COM组件的时候,返回了错误 HRESULT E_FAIL。总结如下:     1. 在控制面板--->管理工具--->服务 中,开启Distributed Transaction Coordinator 服务。
7183 0
|
9月前
|
前端开发 JavaScript
【Javascript系列】Terser除了压缩代码之外,还有优化代码的功能
Terser 是一款广泛应用于前端开发的 JavaScript 解析器和压缩工具,常被视为 Uglify-es 的替代品。它不仅能高效压缩代码体积,还能优化代码逻辑,提升可靠性。例如,在调试中发现,Terser 压缩后的代码对删除功能确认框逻辑进行了优化。常用参数包括 `compress`(启用压缩)、`mangle`(变量名混淆)和 `output`(输出配置)。更多高级用法可参考官方文档。
631 11
|
8月前
|
Ubuntu 安全 网络安全
Docker镜像:Ubuntu支持systemctl、SSH和VNC
总的来说,Docker提供了一个灵活且强大的方式来创建和运行自定义的Ubuntu镜像。通过理解和使用Dockerfile,你可以轻松地创建一个支持systemctl、SSH和VNC的Ubuntu镜像。
530 21
|
开发者
【软件开发规范三】【软件版本命名规范】
软件版本号有四部分组成,第一部分为主版本号,第二部分为次版本号,第三部分为修订版,第四部分为日期版本号加希腊字母版本号,希腊字母版本号共有五种,分别为base、alpha、beta、RC、release
1425 1
【软件开发规范三】【软件版本命名规范】
|
关系型数据库 MySQL 数据库
【赵渝强老师】MySQL的binlog日志文件
MySQL的binlog日志记录了所有对数据库的更改操作(不包括SELECT和SHOW),主要用于主从复制和数据恢复。binlog有三种模式,可通过设置binlog_format参数选择。示例展示了如何启用binlog、设置格式、查看日志文件及记录的信息。
842 6
ly~
|
并行计算 算法 API
SDL 图形库优化对硬件要求有何变化
SDL(Simple DirectMedia Layer)图形库是一个跨平台的多媒体库,适用于多种操作系统和设备。优化后的SDL 2.0对硬件的要求有所提升,特别是显卡性能。优化包括提高渲染效率、利用硬件加速功能、支持高效解码算法等,以增强图形处理能力和流畅度。同时,优化后的SDL对输入设备的交互体验要求更高,需确保键盘、鼠标、触摸屏等设备的顺畅操作。尽管如此,SDL仍保持良好的兼容性,能在较低配置的硬件上运行,只是性能表现会有所差异。
ly~
825 4
|
SQL Java 数据库连接
MyBatis-Plus快速入门:从安装到第一个Demo
本文将带你从零开始,快速入门 MyBatis-Plus。我们将首先介绍如何安装和配置 MyBatis-Plus,然后通过一个简单的示例演示如何使用它进行数据操作。无论你是 MyBatis 的新手还是希望提升开发效率的老手,本文都将为你提供清晰的指导和实用的技巧。
2846 0
MyBatis-Plus快速入门:从安装到第一个Demo