`
thtwin
  • 浏览: 165032 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ExtJS中创建Store的方法

阅读更多
第一次弄EXTJS的时候就在远程加载XML数据的时候给卡住了。做了N多个例子,百度N回都弄不出来,当时就停下来了。因为后来一直没有时间去学,所以之后对EXTJS一直有一种恐惧感!!!!!
现在看着别人用EXTJS做的东西确实好。而自己也觉得如果真的能够不需要美工的帮忙就能够完成一套界面漂亮的东西,那也是很让人兴奋的事情。于是自己又开始从头再来,继续学习ExtJS。不过还是在远程加载数据的时候出问题了(JSON,XML都不好使)。后来又去百度,以前看过的内容又给搜索出来了。这次把Y梨老师的blog里面的一些笔记好好的看了一下。对Ext.data.Store有了更多的了解,自己动手又去练习了一下,结果出来了完全正确。确实很兴奋!!!没完呢,自己马上又到百度里面去找相关东西来看,这次好像什么都能够看懂了似的,看一下子就明白了,而且自己上手去做,做一次结果就能够出来。后来发现之前第一次学的时候只要自己坚持一下,在那个store.load()上面多花点心思,完全可以把问题解决,害得自己浪费这么多的时间.菜鸟确实只能够是菜鸟,可我真的不想当菜鸟(废话)

下面就把相关的创建Ext.data.Store的方法贴出来,以备哪天忘记了,再来看看。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>ExtJS-Window.html</title>   
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css"
   href="../Ext/resources/css/ext-all.css"></link>
  
<script type="text/javascript" src="../Ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../Ext/ext-all.js"></script>
<script>
  Ext.onReady(function(){
/*
第一种创建store的方法(用的是ArrayReader来实现的,SimpleStore其实就是对ArrayReader的封装)
   var data = [["01","thtwin","25"],["02","thtwinj2ee","23"]] ;
   var store = new Ext.data.SimpleStore({
    auteLoad:true, //此处设置为自动加载
    data:data,
    fields:["id","name","age"]
   }) ;
  
//   上面设置为自动加载,所以下面直接用没有问题,如果用store.load();或许下面就会出错
   alert(store.getCount()) ; //得到的结果为:2 (是正确的)
*/

/*
第二种为将相应的数据名称(相当于Record里面的字段)单独提取出来形成一个数组,然后直接用变量名去充当配置项:fields
   var data = [["01","thtwin","25"],["02","thtwinj2ee","23"]] ;
   var fields = ["id","name","age"]  ;
   var store = new Ext.data.SimpleStore({
    auteLoad:true,
    data:data,
    fields:fields
   }) ;
  
   alert(store.getCount()) ;//得到的结果为:2
   alert(store.getAt(0).get("name")) ;//得到的结果为:thtwin
*/

/*
第三种创建store的方法,用到的常用的那种方法.Store中配置了proxy(数据来源属性),reader(数据解析方式属性)
   var data = [["01","thtwin","25"],["02","thtwinj2ee","23"]] ;
   var fields = ["id","name","age"]  ;
   var record = Ext.data.Record.create([
    {name:"id"},
    {name:"name"},
    {name:"age"}
   ]) ;
   var store = new Ext.data.Store({
//    autoLoad:true,
//    data:data, //如果上面不用autoLoad:true,则此处用data:data就会报this.proxy为空的错误,而像下面那样子就不会出错.用了proxy
    proxy:new Ext.data.MemoryProxy(data),
    reader:new Ext.data.ArrayReader(
     {id:"id"},
     //{},       //此处为{}表示没有原数据信息
     fields  
     //record    //此处一般用Recrod对象不过像上面那样子用一个一维数组也可以
    )
   }) ;
   store.load() ;
   alert(store.getCount()) ;

*/
/*
  var store = new Ext.data.Store({
   url:"http://localhost:8080/TestExtJS/Store/storejson.jsp",
   //proxy:new Ext.data.HttpProxy({url:"http://localhost:8080/TestExtJS/Store/storejson.jsp"}),
   autoLoad:true,
   reader:new Ext.data.JsonReader(
    {totalProperty:"results",root:"rows",id:"id"},
    Ext.data.Record.create([
     {name:"id"},
     {name:"name"},
     {name:"age"}
    ])
   )
  }) ;
//  store.load() ;
  alert(store.getCount()) ;
*/

/*
第四种创建通过指定store的proxy来指定数据来源(来源于服务器的数据),通过reader来指定将要解析数据的格式形式(此处用的是json数据格式)
  var proxy = new Ext.data.HttpProxy({url:"http://localhost:8080/TestExtJS/Store/storejson.jsp"}) ;
  var record = Ext.data.Record.create([
    {name:"id"},
    {name:"name"},
    {name:"age"}
   ]) ;

  var reader = new Ext.data.JsonReader({
   root:"rows",
   tottalProperty:"results"
  },record) ;
 
  var store = new Ext.data.Store({
   proxy:proxy,
   reader:reader
   //autoLoad:true
  }) ;
 

  store.load({
   callback:function(records,options,success){
    if(success == true){
     alert(store.getCount()) ;
    }else{
     alert("返回失败") ;
    }
   }
  }) ;
 
   自己以后得注意:
   下面直接显示store里面记录的条数,这样子会出错,因为可能store还没有加载数据完成,程序就执行下面的语句了
   而得到的结果也表明是这么回事,得到的结果总是0 而通过单击下面的按钮结果就正确了为2
   json数据内容如下:
   {results:2,rows:[{id:'1',name:'test',age:'32'},{id:'2',name:'test',age:'32'}]}
   单击按钮得到的结果为:2
   如果将json的数据格式换成:
   {results:2,rows:[{id:'1',name:'test',age:'32'},{id:'1',name:'test',age:'32'}]}
   得到的结果为:1
   因为用id来唯一的标识一条记录,而现在id都一样,所以就只有一条了
 
  alert(store.getCount()) ;
 
  new Ext.Button({
   text:"查看store加载数据之后的结果",
   renderTo:Ext.getBody(),
   listeners:{
    "click":function(){
     alert(store.getCount()) ;
    }
   }
  }) ;
*/
// 第五种创建数据源来自己服务器的XML数据,而解析器为对应的XmlReader
  var record = Ext.data.Record.create([
   {name:"id"},
   {name:"name"},
   {name:"age"}
  ]) ;  
  var proxy = new Ext.data.HttpProxy({url:"http://localhost:8080/TestExtJS/Store/data.xml"}) ;
  /*
   XML中的数据如下:
   <?xml version="1.0" encoding="UTF-8"?>
   <datasets>
    <rows>
     <id>1</id>
     <name>thtwin</name>
     <age>23</age>
    </rows>
    <rows>
     <id>2</id>
     <name>thtwinj2ee</name>
     <age>23</age>
    </rows>
   </datasets>
  */
  var reader = new Ext.data.XmlReader(
   {
    id:"id",
    record:"rows"
   },
   record
  ) ;
  var store = new Ext.data.Store({
//   autoLoad:true,
   proxy:proxy,
   reader:reader
  }) ;
  store.load() ;
  new Ext.Button({
   text:"查看加载数据之后的结果",
   renderTo:Ext.getBody(),
   listeners:{
    "click":function(){
     alert(store.getCount()) ;
     alert(store.getAt(0).get("name") + "  " + store.getAt(1).get("name")) ;
    }
   }
  }) ;
}) ; 
 
</script>
  </head>
 
  <body>
<div id="myPanel"></div>
  </body>
</html>
分享到:
评论

相关推荐

    ExtJs中Store加载(load)时候提示信息

    如果需要刷新Store中的数据并显示加载提示,同样可以在`reload`方法中使用`callback`来控制提示信息的显示与隐藏。例如: ```javascript reportStore.reload({ callback: function (records, options, success) { ...

    storebar extjs通过store实现toolbar

    本篇文章将深入探讨如何利用`Store`来实现`Toolbar`的功能,即所谓的`Storebar`,这在EXTJS开发中是一种高效且灵活的数据驱动UI设计方法。 首先,我们要理解`Store`的概念。`Store`是EXTJS中的一个关键组件,它负责...

    extjs动态生成model、store、panel

    extjs动态生成model、store、panel;sql拼接等多种技术难点

    extjs4 对各类型store各种数据的读取 model 前台 等等

    ExtJS框架支持多种方式将Store中的数据绑定到界面上。常见的绑定方式包括: - **Grid Panel**: 通过Grid Panel组件可以方便地显示表格数据。 - **Form Panel**: 可以用来编辑或显示模型的字段。 - **List**: 显示...

    extjs中文文档大全

    开发者可以通过阅读手册了解每个组件的属性、方法和事件,便于在实际项目中灵活运用。同时,手册还会讲解EXT的布局系统,如Fit布局、Form布局和Table布局,以及如何使用Store和Model进行数据管理。 3. **Ext Core...

    Extjs4下的STOREMENU

    在STOREMENU中,菜单项不再是静态定义的,而是从Store中动态生成,这样可以轻松地实现菜单的动态更新和个性化定制。 在EXTJS4的STOREMENU实现中,通常会包含以下步骤: 1. 创建数据Store:定义一个Store实例,其中...

    extjs grid数据导出excel文件

    要导出数据,我们需要先从Store中获取所有的记录。这可以通过调用`store.getData()`方法来完成,返回的是一个包含所有记录的数据对象。 2. **构建Excel文件格式**:导出的数据需要转换为Excel可识别的格式。EXTJS...

    Extjs+Gride使用方法

    **创建Store** ```javascript var store = Ext.create('Ext.data.Store', { fields: ['name', 'email', 'phone'], data: [ { name: 'John', email: 'john@example.com', phone: '555-1234' }, // 更多数据项......

    ExtJS grid过滤操作

    本篇将深入探讨ExtJS Grid的过滤操作,以及如何动态地对本地store进行筛选。 1. **Grid过滤基础** - **Filter Model**:ExtJS Grid中的过滤功能基于Filter Model。每个列都可以有自己的过滤器,用户可以根据需要...

    extJs3升级extjs4方案

    例如,在 ExtJS3 中,我们可以使用以下代码来创建一个 TreePanel: ```javascript var ptree = new Ext.tree.TreePanel({ // ... }); ``` 而在 ExtJS4 中,我们需要使用以下代码来创建一个 TreePanel: ```...

    extjsDemo(store grid form mvc模式等一些demo)

    在ExtJS中,Store是用来管理数据集的,它可以是从服务器获取的JSON或XML数据,也可以是本地数据。Store负责加载、缓存和处理数据,并与视图(View)如表格进行双向绑定,当数据发生变化时,视图会自动更新。在"ext...

    ExtJs官方网站中文的入门指南 javascript

    本节将通过一个简单的例子演示如何使用ExtJs创建动态页面。 ##### **2.1 解压安装** - 将下载好的压缩包解压至合适的目录(例如`C:\code\Ext\v1.0`)。 - 在此目录下创建一个名为`tutorial`的文件夹,用于存放示例...

    extJs2.0 中文手册

    在深入探讨ExtJs2.0的具体知识点之前,需要明确ExtJs2.0中文手册的主要内容涵盖了框架的安装、配置、组件使用方法、事件处理、数据管理以及高级应用开发等方面。 首先,ExtJs2.0中文手册应该会介绍如何安装和配置...

    Extjs4 关于Store的一些操作(加载/回调/添加)

    在EXTJS中,可以遍历一个Store中的所有记录,根据条件筛选并添加到另一个Store中。以下是一个示例: ```javascript var MyDocnumStore_Load = function(store) { store.each(function(record) { if (record.data....

    EXTJS4自学手册

    EXTJS4自学手册——EXT数据结构组件(创建一个Model) EXTJS4自学手册——EXT数据结构组件(Model数据验证,数据交互) EXTJS4自学手册——EXT数据结构组件 EXTJS4自学手册——EXT数据结构组件(proxy代理类之客户端...

    extjs3.3 中文文档

    4. **数据管理**:EXTJS的数据模型(Model)、数据存储(Store)和代理(Proxy)是数据管理的关键部分。文档将解释如何加载、保存和操作数据,以及如何与服务器进行通信。 5. **布局和渲染**:EXTJS提供了多种布局...

    Extjs4.2 Chart柱状图

    在ExtJS 4.2中创建柱状图,首先你需要引入相关的类库,包括`Ext.chart.*`,这通常通过在页面中加载相应的CSS和JavaScript文件来实现。接下来,定义一个包含数据的Store,这个Store将提供图表的数据源。数据可以是...

    extjs3.0中文API

    运行“3.0下3.x API Documentation.exe”文件,可以查看详细的API参考,其中包括每个类、方法、属性和事件的描述,帮助开发者深入理解并有效地利用ExtJS 3.0的全部功能。 总的来说,ExtJS 3.0中文API文档是学习和...

Global site tag (gtag.js) - Google Analytics