学习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增删改查询回顾总结的更多相关文章

  1. NHibernate系列文章三:简单的增删改查询

    摘要 上一篇文章只完成了简单的NHibernate安装.配置和连接数据库.这篇文章介绍怎样实现最简单的数据库读写操作. 1. 重构ISessionFactory生成过程 将生成ISessionFact ...

  2. ORM增删改查询例题

    public partial class Form1 : Form     {         private MydbInfoDataContext context = new MydbInfoDa ...

  3. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  4. python 全栈开发,Day62(外键的变种(三种关系),数据的增删改,单表查询,多表查询)

    一.外键的变种(三种关系) 本节重点: 如何找出两张表之间的关系 表的三种关系 一.介绍 因为有foreign key的约束,使得两张表形成了三种了关系: 多对一 多对多 一对一 二.重点理解如果找出 ...

  5. PHP-----练习-------租房子-----增删改查,多条件查询

    练习-------租房子-----增删改查,多条件 一 .题目要求: 二 .做法: [1]建立数据库 [2]封装类文件------DBDA.class.php <?php class DBDA ...

  6. SpringMVC整合Hibernate实现增删改查之按条件查询

    首先我贴出我项目的结构,只完成了条件查询的相关代码,增删改没有写. 1.新建一个动态Web工程,导入相应jar包,编写web.xml配置文件 <context-param> <par ...

  7. Elasticsearch增删改查 之 —— mget多文档查询

    之前说过了针对单一文档的增删改查,基本也算是达到了一个基本数据库的功能.本篇主要描述的是多文档的查询,通过这个查询语法,可以根据多个文档的查询条件,返回多个文档集合. 更多内容可以参考我整理的ELK文 ...

  8. OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)

    公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...

  9. 夺命雷公狗---Thinkphp----12之文章的增删改查(图片上传和关联查询)

    我们由于表分析的不够完善,所以我们来加多一个tid的字段,到时候主要目的是为了更好的遍历出文章是属于那个分类下的,表如下所示: 那么下一步我们就开始创建一个ArticleController.clas ...

随机推荐

  1. Bash 中为 _ 变量赋空值的三个场景

    $_ 有好几个功能,我们最常用的是用它来获取“刚刚执行过的命令的最后一个参数”这个功能,比如下面这样: $ ls ~/Downloads/very/long/dir/  # ls 到某个目录看看有没有 ...

  2. Ubuntu 14 中,SecureCRT、SecureFX个性化设置

    [SecureCRT 个性化设置] 打开设置路径:菜单栏 -> Opions -> Global Options -> General -> Default Session - ...

  3. Unix/Linux进程间通信(一):概述

    序 Linux下的进程通信手段基本上是从Unix平台上的进程通信手段继承而来的.而对Unix发展做出重大贡献的两大主力AT&T的贝尔实验室及BSD(加州大学伯克利分校的伯克利软件发布中心)在进 ...

  4. Redis学习 - 配置属性:protected-mode

    根据redis的说明,protected-mode在同时存在如下两种情况时触发: 1) The server is not binding explicitly to a set of address ...

  5. ASP.NET Core--基于授权的资源

    翻译如下: 通常授权取决于正在访问的资源. 例如,文档可以具有作者属性. 将只允许文档作者对其进行更新,因此必须在进行授权评估之前从文档存储库加载资源. 这不能使用Authorize属性来完成,因为属 ...

  6. BZOJ2006——[NOI2010]超级钢琴

    1.题意:给一个序列,让你取出k个不同的区间,要求长度在之间,问所有区间和的最大值 2.分析:这道题拿过来就能知道是要拿出前k个最大的区间,我们思考最暴力的做法,就是把这个所有的区间枚举出来算,取出前 ...

  7. 利用Mongoose来结构化模式与验证

    Mongoose是一个文档对象模型(ODM)库,为MongoDB Node.js原生驱动程序提供更多的功能. 把结构化的模式应用到一个MongoDB集合,提供了验证和类型转换的好处 Mongoose通 ...

  8. 学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇

    0.环境 硬件环境见上一篇博客:学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境 OpenStack网络配置:一个tenant, 2个虚机 Type drive ...

  9. Spring 定时器Quartz的用法

    Spring定时器Quartz的用法也很简单,需要引入quartz-all-1.5.2.jar java代码如下: package com.coalmine.desktop; import java. ...

  10. 关于readonly修饰符

    修饰字段: 1.值类型:不能修改值 2.引用类型:是指该字段引用的对象不可以修改,但是里面的内容是可以修改的! 示例: static void Main(string[] args) { Consol ...