Ext之ExtGrid增删改查询回顾总结
学习Ext已经有些许时间了,发现实际运用过程中ExtGrid系列还是最为常用的,本来想自己写些话语来总结的,无意间看到有位仁兄早就总结了,故冒犯贴在此处,以便以后翻阅,还望见谅
Ext - Grid
Grid是Ext框架中一个重要的组成部分。一般建立Grid主要实现数据的增删改查。
建立一个Grid
Grid一般有三个主要的内容,ds,cm,GridPanel
var ds = new Ext.data.Store();
var cm = new Ext.grid.ColumnModel();
var grid = new Ext.grid.GridPanel();
如果要页面载入时,Grid不显示,事件触发查询并建立Grid显示。 很简单,将GridPanel建立在事件的function中就可以了。
如果载入时就显示Grid,这里分几种情况:
(1)页面载入时,Grid显示,并查询和显示出数据。
(2)页面载入时,Grid显示,但不发送请求数据,事件触发查询。该查询条件已固定或不需要条件。
(3)页面载入时,Grid显示,不查询数据,事件触发查询,该查询需要从页面上存在的文本框中获得数据作为条件。
(4)与(3)相同,但是希望在Grid查询过程中有loadMask效果。
对于1)
直接在Ext.onReady()中建立GridPanel,并且ds调用load方法。
对于2)
在Ext.onReady()中建立GridPanel,而在事件的function中写ds.load()
对于3)
在Ext.onReady()中建立GridPanel,而此时的ds为一个假ds,它的作用仅仅是为了能够在页面载入时就显示Grid,而在事件的function中
则再建立一个带有查询条件的ds,然后用该ds重新配置Grid.grid.reconfigure(ds,cm);
对于4)
查询的要求可由grid被新的ds重新配置的方法实现,但是会发现,这样做时,Grid的loadMask效果也不会出现了。有一个方法,就是在事件的
function中,将Grid的render的div清空,即div.innerHTML="" 之后再重新建立一个Grid。这样做的缺点就是会在有很多代码重复。
可能还会出现一些其他的function的调用以及无法取得某对象的问题。
以下由第三种情况为例,来说明增删改查。
建立:
var fds = new Ext.data.Store();
var cm = new Ext.grid.ColumnModel([
{header:'例子',width:100,dataIndex:'test',
editor:new Ext.form.TextField({
id:'test'
})
}
]);
var sm = new Ext.grid.RowSelectionModel();
var grid = new Ext.grid.EditorGridPanel({
ds:fds,
cm:cm,
sm:sm,
width:200,
height:200,
title:'举例',
renderTo:Ext.get("testdiv")
});
这里建立EditorGridPanel,是可以进行编辑的Grid.
1 查询:(点击按钮触发事件)
function btnclick()
{
var Record = Ext.data.Record.create([
{name:'test'}
]); //此处将record单独提出方便操作
var ds = new Ext.data.Store({
url:'访问的地址',
reader:new Ext.data.XmlReader({
record:'item'
},Record)
});
ds.load();
grid.reconfigure(ds,cm);
}
2 添加
新建一条数据
var r = new Record({
test:'随便举个例子'
});
插入到表格指定行,n为要插到这行后(此处取了表格的行数,即插入到最后),m是编辑完毕后focus的位置列数
var n = grid.getStore().getCount();
grid.stopEditing();
grid.getStore().insert(n,r);
grid.startEditing(n,m);
3 删除
删除选定的行
var r = grid.getSelectionModel().getSelected();
ds.remove(r);
删除多行,也一样,用getSelections()反法取到选中的行的一个数组,然后再一一删除。
删除所有行
ds.removeAll();
4 修改
两种方法,一种直接手动点击需要修改的单元格,EditorGridPanell中的ClicksToEdit来设置点击几下进入编辑状态。
还有一种从别处获得数据自动修改。
假设一条新的数据,
var nr = ['修改后的例子'];
选定你要修改的行
var recordtoedit = grid.getSelectionModel().getSelected();
或者var recordtoedit = ds.getAt(rowIndex);
recordtoedit.set('test','修改后的例子');
还可以在修改完毕后将修改过的行的颜色改变来标示出哪一条是修改过的。
添加事件
grid.on('afteredit',function(e){
var rowIndex = e.row;
grid.getView().getRow(rowIndex).style.backgroundColor="red";
//可以增加透明度效果
grid.getView().getRow(number).style.filter = "alpha(opacity=50)";
grid.getView().getRow(number).style.MozOpacity =".5";
});
原文出处:http://hi.baidu.com/mousetrapj/blog/item/4e58d501ead2c807728da546.html/cmtid/f1f0aa5c11b06946faf2c00c
Ext之ExtGrid增删改查询回顾总结的更多相关文章
- NHibernate系列文章三:简单的增删改查询
摘要 上一篇文章只完成了简单的NHibernate安装.配置和连接数据库.这篇文章介绍怎样实现最简单的数据库读写操作. 1. 重构ISessionFactory生成过程 将生成ISessionFact ...
- ORM增删改查询例题
public partial class Form1 : Form { private MydbInfoDataContext context = new MydbInfoDa ...
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)
一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...
- PHP-----练习-------租房子-----增删改查,多条件查询
练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...
- SpringMVC整合Hibernate实现增删改查之按条件查询
首先我贴出我项目的结构,只完成了条件查询的相关代码,增删改没有写. 1.新建一个动态Web工程,导入相应jar包,编写web.xml配置文件 <context-param> <par ...
- Elasticsearch增删改查 之 —— mget多文档查询
之前说过了针对单一文档的增删改查,基本也算是达到了一个基本数据库的功能.本篇主要描述的是多文档的查询,通过这个查询语法,可以根据多个文档的查询条件,返回多个文档集合. 更多内容可以参考我整理的ELK文 ...
- OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)
公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...
- 夺命雷公狗---Thinkphp----12之文章的增删改查(图片上传和关联查询)
我们由于表分析的不够完善,所以我们来加多一个tid的字段,到时候主要目的是为了更好的遍历出文章是属于那个分类下的,表如下所示: 那么下一步我们就开始创建一个ArticleController.clas ...
随机推荐
- [UML]UML系列——用例图Use Case
用例图的概念 用例图是描述用例.参与者以及它们之间关系的图. 用例图的作用 用例图是从用户的角度来描述对信息系统的需求,分析产品的功能和行为. 用例图定义和描述了系统的外部可见行为,是分析.设计直至组 ...
- Windows 7个性化配置,关闭Win7动画效果,设置窗口背景为“ 豆绿色”
减少眼睛疲劳配色(豆绿色): RGB:, , ,颜色名称:#C7EDCC 1.任务栏设置 2.关闭Win7动画效果 控制面板 -> 轻松访问 -> 优化视频显示 3.去掉窗口阴影 右键单击 ...
- T-SQL 语句的优化
SQL调优. 1.索引是数据库调优的最根本的优化方法.聚簇索引.非聚簇索引. 聚簇索引:物理序与索引顺序相同.(只能有一个) 非聚簇索引:物理顺序与索引顺序不相同. 2.调整WHERE 子句中的连接顺 ...
- wampServer图标为橙色无法启动原因之一
前段时间,自己在本地做了一个WordPress的网站,利用wampserver配置的,后来突然无法启动了. 经过仔细查找发现是因为之前装了sql server,导致wampServer无法启动,那么怎 ...
- 【GoLang】golang 中 defer 参数的蹊跷
参考资料: http://studygolang.com/articles/7994--Defer函数调用参数的求值 golang的闭包和普通函数调用区别:http://studygolang.com ...
- mui问题
2016.7.27 1.当你的html不在文件夹的时候 引路径就不要加../ 2.当用svn提交代码的时候要先右键项目->版本管理->与资源库同步,查看你的修改的地方和原来部署上去的文 ...
- Python~删除空格,插入换行符号
f.write(rf.replace(' ','')) f.write(rf.replace('1041','\n1041')) 不能连续起作用? # -*- coding: UTF-8 -*- im ...
- PHP 基础(赋值及函数)
开端<?php>结尾</php> 弱类型语言 定义变量的时候 不需要 声明 但是 每一个变量前 都必须 加$ 符号 储存文件按 统一放到 安装文件夹下面的 WA ...
- CoreAnimation 之CATextLayer
如果你想在一个图层中显示文字,完全可以借助图层代理直接将Core Graphics写入图层的内容(这就是UILabel的精髓).如果雨果寄宿于图层的视图,直接在图层上操作,其实相当繁琐.你要为每一个显 ...
- 解决xampp端口冲突
今天电脑按了一下xampp,结果运行wamp的时候,出现了下面的情况: 在网上查了一下,结果是端口被占用,然后我就手动修改了一下. 1.修改xampp的端口号 依次找到:XAMPP的安装目录(比如D: ...