Extjs相关知识点梳理

 

store是一个为Ext器件提供record对象的存储容器,行为和属性都很象数据表
方法:不列举继承来的方法
Store( Object config )
构造,config定义为{
autoLoad : Boolean/Object,    //自动载入
baseParams : Object,    //只有使用httpproxy时才有意义
data : Array,        //数据
proxy : Ext.data.DataProxy,//数据代理
pruneModifiedRecords : boolean,//清除修改信息
reader : Ext.data.Reader,    //数据读取器
remoteSort : boolean,    //远程排序?
sortInfo : Object,    //{field: "fieldName", direction: "ASC|DESC"}这样的排序对象
url : String,        //利用url构造HttpProxy
}

 

filterBy( Function fn, [Object scope] ) : void
更强悍的过滤方法.fn接收两个参数record和id
find( String property, String/RegExp value, [Number startIndex], [Boolean anyMatch], [Boolean caseSensitive] ) : Number
找到符合条件的第一条记录,参数同filter
findBy( Function fn, [Object scope], [Number startIndex] ) : Number
参见filterBy
getAt( Number index ) : Ext.data.Record
getById( String id ) : Ext.data.Record
依充号/id得到record对象

 

load( Object options ) : void
由指定的Proxy使用指定的reader读取远程数据

 

loadData( Object data, [Boolean append] ) : void
用法比load简单一点,目的是一样的,只是这次数据由本地读取

reload( [Object options] ) : void
重新载入,相当于 load(options,false),如果连options都没有传入,则取最后一次load时使用的参数

http://blog.csdn.net/xiaohewoai/article/details/4091604

ExtJS本质上也是一个AJAX的框架,但是它和DWR有很大不同,首先,DWR是JAVA世界的产物,而ExtJS是后台无关的。也就是说,ExtJS的后台可以是.NET,PHP或者JAVA都可以。其实我们在网上看到的大部分例子都是PHP或者.NET,后台的。这说明ExtJS在所有后台都很受青睐。其次,DWR只关注客户端与服务器端的交互,没有自己的界面组件,而ExtJS最让人惊叹的就是其丰富而强大的界面组件,除此以外,它自身也能轻松地异步访问后台组件。

1.      首先是init-main.js,这里定义了整个应用的主体布局视图Viewport。它和我们HTML中的frameset有点类似。在我们的主显示区里还放了一个TabPanel,这就是我们桌面应用中常见的选项面板。要理解下面的JS呢,你必须先掌握JSON这种数据格式,这个格式我在前面的ExtJS应用中已经详细讲过,如果还不太清楚,到http://www.json.org/json-zh.html 去看看,JSON在整个ExtJS体系里占有重要地位,熟悉JSON格式的人会对名/值对,{},[]很敏感。大家看到,在Viewport类和TabPanel类里都传入一个JSON对象来初始化整个组件。其次,你还要有容器和组件的概念,每个容器组件(容器同时也是组件,这是相对的,它放东西的时候是容器,被放置其中的时候就是组件!)都有一个items参数指定一个JSON数组来表明自己容纳的组件。

 

 

 

http://www.cnblogs.com/hannover/archive/2009/09/09/1563671.html

http://www.cnblogs.com/hannover/archive/2009/09/09/1563673.html
DAO里操作的主要是POJO类,而在我们的Service里面要做的就是DTO和POJO的转化工作。因为表现层的代码只会直接和DTO打交道。这就是严格的JavaEE分层。说到这里,可能有人开始迷惑了。我们这里说明一下:在javaEE企业级开发中,我们一般提倡四层架构体系:WEB表现层->业务逻辑层(服务层)->持久层(数据访问层)->数据库层,我们这里分别使用Struts,Spring,Hibernate来充当前三个层次的框架。一般我们把Action归为Struts所在表现层,Service归为Spring所在业务逻辑层(实际上,Spring是一个系统级别的框架,它的内涵和外延都比另外两个框架要来的大!),DAO归为Hibernate所在持久层,而在每一层上都有特定的传值组件(呵呵,有人不喜欢用大词,通俗点说,所谓传值组件在javaEE体系中就是在页面和数据库之间帮忙传递数据的用JAVA写的类!),我们自动,Struts里有ActionForm,Hibernate里有POJO,那在Spring管辖的业务逻辑层,主要就是DTO。所以我们的数据经常在这3个传值组件之间传递。

 

这里create和convert的配置大家注意下,所谓create就是创建一个JavaScript类和Java类的关联映射。我们这里只有一个创建器,它会在客户端本地动态生成一个houseService.js文件,然后它对应Spring框架管理的一个名为houseService的Bean,主要客户端只要引用houseService.js这个文件,就能调用到服务器端houseService的方法。那么,要是我只想向外界公开少数几个方法呢?(涉及到安全问题),我们就可以用include配置了。那么,这不就行了吗?还需要convert干什么呢?恩,等一下。如果我们要在服务器端给客户端传递一个DTO对象,或者是放置着若干DTO对象的集合对象时。或者反过来,我们在客户端给服务器端传递一个JavaScript对象时。DWR怎么做JavaScript对象和DTO对象之间的解析?如果你不给它相关信息,它是做不到的,这就是convert的作用了。也就是说,create指定的对象被创建,convert指定的对象(客户端和服务器端之间携带传递的参数)被转换!

 

 

 

http://www.cnblogs.com/hannover/archive/2009/09/09/1563664.html

ExtJs4.1:取得一个已存在Store的reference

//取得'StoreXiang'的reference 
var StoreXiang = Ext.data.StoreManager.lookup('StoreXiang');  

*  取得Srore的reference,并将其赋给gridPanel的store属性:

Ext.create('Ext.grid.Panel', {
    title: 'Simpsons',
    store: Ext.data.StoreManager.lookup('simpsonsStore'),
    columns: [
        { header: 'Name',  dataIndex: 'name' },
        { header: 'Email', dataIndex: 'email', flex: 1 },
        { header: 'Phone', dataIndex: 'phone' }
    ],
    height: 200,
    width: 400,
    renderTo: Ext.getBody()
});

http://blog.csdn.net/bq_cui/article/details/8527841

 

在4系中,grid的类是Ext.grid.Panel,由两个必要的部分组成:Store和columns,其中Store为Ext.data.Store或者Ext.data.DirectStore对象的实例,columns为Ext.grid.Panel实例的属性。

 

一个最简单的grid:

测试网页:test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

    <title></title>

    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />

    <script src="ext/ext-all.js" type="text/javascript"></script>

    <script src="ext/ext-lang-zh_CN.js" type="text/javascript"></script>

    <script src="js/test.js" type="text/javascript"></script>

</head>

<body>

</body>

</html>

test.js

Ext.onReady(function() {

  Ext.create('Ext.data.Store', {

      storeId:'simpsonsStore',

      fields:['name', 'email', 'phone'],

      data:{'items':[

          {"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"},

          {"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"},

          {"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"},                        

          {"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"}            

      ]},

      proxy: {

          type: 'memory',

          reader: {

              type: 'json',

              root: 'items'

          }

      }

  });

  Ext.create('Ext.grid.Panel', {

      title: 'Simpsons',

      store: Ext.data.StoreManager.lookup('simpsonsStore'),

      columns: [

          {header: 'Name',  dataIndex: 'name'},

          {header: 'Email', dataIndex: 'email', flex:1},

          {header: 'Phone', dataIndex: 'phone'}

      ],

      height: 200,

      width: 400,

      renderTo: Ext.getBody()

  });

})

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

这是一个最简单的grid实现过程,使用memoryProxy在内存中读取json数据,只有数据显示功能。通常情况下,我们不会把grid直接渲染到body,而是到另外的container,所以herght、width、renderTo属性不是必须的。必须有的两个属性分别是store和columns。其中columns直接在Ext.grid.Panel实例化时通过Ext.create参数设置,store为Ext.data.Store或者Ext.data.DirectStore的实例,通常使用Ext.data.StoreManager.lookup()函数搜索StoreManager中注册的storeId得到。也可以指定实例名称,效果完全相同,方法如下:

Ext.onReady(function() {

      var simpsonsStore =  Ext.create('Ext.data.Store', {

      fields:['name', 'email', 'phone'],

      data:{'items':[

          {"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"},

          {"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"},

          {"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"},                        

          {"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"}            

      ]},

      proxy: {

          type: 'memory',

          reader: {

              type: 'json',

              root: 'items'

          }

      }

  });

  Ext.create('Ext.grid.Panel', {

      title: 'Simpsons',

      store: simpsonsStore,

      columns: [

          {header: 'Name',  dataIndex: 'name'},

          {header: 'Email', dataIndex: 'email', flex:1},

          {header: 'Phone', dataIndex: 'phone'}

      ],

      height: 200,

      width: 400,

      renderTo: Ext.getBody()

  });

})

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

也可以通过4系最新提供的Ext.define函数首先定义自己store类,先不实例化,在Ext.grid.Panel实例化过程中实例化store,优势是可以根据需要实例化相应的store,节省资源。

可以通过4系提供的new()函数实例化store,如下:

Ext.onReady(function() {

  Ext.define('simpsonsStore',{

    extend:'Ext.data.Store',

    fields:['name', 'email', 'phone'],

    data:{'items':[

        {"name":"Lisa", "email":"lisa@simpsons.com", "phone":"555-111-1224"},

        {"name":"Bart", "email":"bart@simpsons.com", "phone":"555--222-1234"},

        {"name":"Homer", "email":"home@simpsons.com", "phone":"555-222-1244"},                        

        {"name":"Marge", "email":"marge@simpsons.com", "phone":"555-222-1254"}            

    ]},

    proxy: {

        type: 'memory',

        reader: {

            type: 'json',

            root: 'items'

        }

    }

    });

  Ext.create('Ext.grid.Panel', {

      title: 'Simpsons',

      store: new simpsonsStore,

      columns: [

          {header: 'Name',  dataIndex: 'name'},

          {header: 'Email', dataIndex: 'email', flex:1},

          {header: 'Phone', dataIndex: 'phone'}

      ],

      height: 200,

      width: 400,

      renderTo: Ext.getBody()

  });

})

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

最简单,也是最基础的使用方法就是上面这个了,今天就说这么多,明天说说columns的设置。

其它

http://www.cnblogs.com/zhangwei595806165/archive/2012/12/13.html

上一篇:最完整的Elasticsearch 基础教程


下一篇:Elasticsearch 基础入门