ExtJs开发教程_001_Ext.data.Store使用方法详解

Extjs4--Ext.data.Store的多列排序和过滤器 Extjs---表格数据Store的排序和过滤器 Extjs经常使用Ext.data.Store 阅读详情

这个组件继承自Ext.data.AbstractStore

 本篇讲解了如何构造并且做一些基本使用

下面是他的属性列表

autoLoad //是否自动加载
autoSync//是否自动同步
buffered//允许缓冲(官方有个5000条数据的例子可以参看)
clearOnPageLoad//是否在加载新数据的时候清空旧数据
clearRemovedOnLoad//加载的时候把删除掉的数据彻底删除(所谓删除掉的数据是指store.remove())
data//数据
fields//解析数据的字段
filters//过滤器(可以参看Ext.util.Filter和Ext.ux.grid.filter.Filter)
groupDir
groupField//用哪一个字段分组
leadingBufferZone//缓冲的情况下,最多缓冲多少行
listeners//监听器,可以指定各种on事件
model//解析数据的模型,模型可以代替proxy和fields配置
pageSize//每页显示多少条数据
proxy//数据代理(其实就是发送ajax来请求数据用的)
purgePageCount//多少页清除一次缓存数据(具体是和缓冲结合使用,本文不介绍缓冲)
remoteFilter//这个属性会往服务器发送过滤条件
remoteGroup//往服务器发送分组条件(同上,做法就是表单参数提交到后台)
remoteSort//往后台发送排序条件
sortOnFilter//排序的时候进行过滤
storeId//唯一标示,让Ext.data.StoreManager来管理用的
trailingBufferZone//缓冲多少条

// 本页的全局pageSize
var PAGESIZE = 20;
 
var demoStore = Ext.create('Ext.data.Store', {
           // fields一定要明确指定type,这样有很多好处,比如filter能直接设为true,便会默认按照store-fields设置好的type来确定filter的类型。
           fields : [{
                     name : 'primaryKey',
                     type : 'int'
                  },{
                     name : 'price',
                     type : 'float'
                  }, {
                     name : 'productName',
                     type : 'string'
                  }, {
                     name : 'title',
                     type : 'string'
                  }, {
                     name : 'buyDate',
                     type : 'date',
                     dateFormat : 'Y-m-d'// 此处可以避免IE下日期出现错误nan
                  }],
           // 数据代理服务
           proxy : {
              type : 'ajax',// 使用ajax请求
               url :'/read/demo/product.action',// 请求后台读取数据的地址
              // 读取数据的工具(数据代理)
              reader : {
                  // 读取方式按照json字符串格式读取
                  type : 'json',
                  // json解析成js对象之后读取所有数据(通常是数组)的属性名称。
                  root : 'root',
                  // json解析成js对象之后读取数据总条数的属性名称
                  totalProperty : 'totalProperty'
              }
           },
           // 自动加载
           autoLoad : true,
           // 每页显示多少条
           pageSize : PAGESIZE
       });
  <pre name="code" class="plain">// 商品grid
       Var demoGrid = Ext.create('Ext.grid.Panel', {
                  // 不要边框能好看一些
                  border : false,
                  //用来进行选择的选择器
                  selModel : Ext.create('Ext.selection.CheckboxModel'),
                  // 所使用的数据源
                  store : renYuanStore,
                  // 创建列详细可以参看renYuanColumns函数
                  columns : renYuanColumns(),
                  // 需要分页、全显示按钮
                  pageChange : true,
                  // 底部toolbar,不需要进行后处理。所以使用“匿名类”
                  bbar : [{
                   // 控件类型pagingtoolbar
                            xtype : 'pagingtoolbar',
                   // 这个属性好像在extAPI中没写,但是不写还不行。能控制ProgressBarPager。不然ProgressBarPager会出bug
                            pageSize : PAGESIZE,
                  // 所使用的数据源
                            store : renYuanStore,
                 // 因为Ext.ux.LiveSearchGridPanel默认把tbar和bbar占用了。所以只能使用dockedItems添加toolbar
                             dock : 'bottom',
                  // 插件,使用ProgressBarPager插件,显示进度条
                            plugins : Ext.create('Ext.ux.ProgressBarPager')
                         }],
                  // 添加双击编辑事件监听器
                  listeners : {
                     itemdblclick : function() {
                // editBtn是编辑按钮。此处做法目的是双击数据进行编辑
                         editBtn.handler();
                     }
                  }
              });

该组件相当于一个数据源,能够给很多呈现数据的组件提供数据。

核心工作过程是:

首先请求后台读取数据,接受后台返回的数据(其实就是个字符串)

然后按照指定格式解析数据。通常默认格式为json

我们可以自定义解析规则。详细参看Ext.data.reader.Reader

最后把解析好的数据转换成Ext.data.Model实例

我们可以自定义模型。

Ext.define('User', {
    extend:'Ext.data.Model',
    fields: [
        {name:'name',  type: 'string'},
        {name:'age',   type: 'int', convert: null},
        {name:'phone', type: 'string'},
        {name:'alive', type: 'boolean', defaultValue: true, convert: null}
    ],
  
    changeName:function() {
        var oldName = this.get('name'),
            newName = oldName + " The Barbarian";
  
        this.set('name', newName);
    }
});

通常重复打开定义了Ext.data.Model的页面(就是加载js)会出现一个错误,大致意思是说,重复定义某个类了。

我们可以这样避免这个问题

Var exitModel=Ext.ModelManager.get(‘modelId’)//此处modelId是你自己给自己定义的model指定的ID。('User')
//如果不知道exitModel是什么类型,为什么可以直接取反,请参看js基础(js中 nan,undifined,null,0,‘’都是互通的)
If(!exitModel){
//TODO 在这里定义你的model <br>}

自定义模型之后就可以使用该模型来构造store

改写上面的store

Ext.define('ProductModel', {
     extend:'Ext.data.Model',
     fields: [{
                     name : 'primaryKey',
                     type : 'int'
                  },{
                     name : 'price',
                     type : 'float'
                  }, {
                     name : 'productName',
                     type : 'string'
                  }, {
                     name : 'title',
                     type : 'string'
                  }, {
                     name : 'buyDate',
                     type : 'date',
                     dateFormat : 'Y-m-d'// 此处可以避免IE下日期出现错误nan
                  }]
 });
  
 var demoStore = Ext.create('Ext.data.Store', {
     model:'ProductModel',
     // 数据代理服务
    proxy : {
              type : 'ajax',// 使用ajax请求
               url :'/read/demo/product.action',// 请求后台读取数据的地址
              // 读取数据的工具(数据代理)
              reader : {
                  // 读取方式按照json字符串格式读取
                  type : 'json',
                  // json解析成js对象之后读取所有数据(通常是数组)的属性名称。
                  root : 'root',
                  // json解析成js对象之后读取数据总条数的属性名称
                  totalProperty : 'totalProperty'
              }
           },
           // 自动加载
           autoLoad : true,
           // 每页显示多少条
           pageSize : PAGESIZE
       });


写上面的store,这样是不是比原来简单多了,而且更清晰了。

其实proxy属性也可以定义在model中。

只是通常不建议这么做。因为模型就是模型,他的数据代理是数据源赋予的。这样也能让我们的程序中,可以定义很多的模型,然后根据需要选择模型来搭配代理,从而为同一个模型赋予不同的后台读取操作。

 

Ext.data.Store的基本用法 Ext.data.Store的基本用法 Ext.data.Store的基本用法 Ext.data.Store的基本用法 立即下载

相关推荐

ext 基本知识-store-proxy-reader-ext-connection-实例

conn.request({ success: function(response) { Ext.Msg.alert('info', response.responseText); }, failure: function() { Ext.Msg.alert('warn', 'failure'); } }); var ds = Ext.data.JsonStore({ url: 'xxx.jsp', root: 'root', fields: ['id','name','descn'] });

Ext.data专题四:Ext.data.Store

Ext.data专题四:Ext.data.StoreExt.data.Store是EXT中用来进行数据交换和数据交互的标准中间件,无论是Grid还是ComboBox,都是通过它实现数据读取、类型转换、排序分页和搜索等操作的。Ext.data.Store中有一个Ext.data.Record数组,所有数据都存放在这些Ext.data. Record实例中,为后面的读取和修改操作做准备

天将降大任于斯人也 4238

Python实现飞书机器人定时发送文本、图片等群消息

python实现飞书群自动发送告警消息

tyh_keephunger的博客 2万+

玩转extjs5之Ext.data.Model和Ext.data.Store(四)

一、Ext.data.Model        (1)Model代表应用程序管理的一些对象。例如,我们可能会为 我们想在系统中建模的现实世界中的一些物体像使用者、产品和汽车等定义一个Model。这些Model在 模型管理器中注册,被Store使用, 而这些Store又被许多 Ext中许多与数据绑定的组件使用.。       Model定义为字段、任意方法和与模型相关的属性的集合。例如:

六指琴魔 7809

【实战指南】从零构建UNet多分类分割数据集:标注、转换与训练全流程

本文提供了一份从零构建UNet多分类分割数据集的完整实战指南。详细介绍了使用Labelme进行图像标注的核心技巧与规范,并通过Python脚本将标注结果转换为模型可用的VOC格式。最后,指导如何修改经典的PyTorch版UNet代码,以适配自定义数据集并进行训练与测试,帮助读者完成从数据准备到模型训练的全流程。

arduino9maker的博客 288

手把手教你用STM32的ADC读取PT100模块,实现高精度温度采集(附完整代码)

本文详细介绍了如何利用STM32的ADC模块读取PT100温度传感器信号,实现高精度温度采集系统。从硬件选型、ADC配置校准到温度计算算法和软件滤波技术,提供完整的实现方案和优化技巧,帮助工程师快速构建稳定可靠的温度监测系统。

weixin_29185199的博客 347

extjs 表格数据重新加载_使用新参数ExtJs Ext.data.JsonStore重新加载json存储

我目前有麻烦重新加载一个json存储与新的参数。这是我的商店:newsletters = new Ext.data.JsonStore({url: '/newsletters/',root: 'results',fields: ['id','body''recipients'],baseParams: { command: 'json',to: dateTo,from: dateFrom },au...

weixin_32787251的博客 427

电工识图入门:从电气符号到控制逻辑的完整指南

电工图纸是电气工程领域的通用语言,无论是设备安装、线路检修还是系统设计,看不懂图纸就像航海没有海图。很多初学者面对复杂的电气符号和线路走向感到无从下手,实际上只要掌握正确的识图方法,就能从简单的照明电路逐步过渡到复杂的自动化控制系统。 本文将从最基础的电气符号和图纸类型讲起,通过实际图纸案例解析,带你建立完整的识图逻辑。你将学会如何区分主回路和控制回路,如何追踪电流路径,以及如何结合图纸进行故障排查。无论你是电工新手、设备维护人员还是相关专业学生,这套方法都能帮你快速提升图纸理解能力。 1. 电气图纸基础:

chengyixian7877的博客 337

Extjs 获取Store的数据

Store.getCount()返回的是store中的所有数据记录,然后使用for循环遍历整个store,从而得到每条记录。 除了使用getCount()的方法外,还可以使用each()函数,如下面的代码所示。 var store = new Ext.create('Ext.data.Store', { storeId: "FontColorStore", fields: [{

xs_zgsc的专栏 1万+

磁感应强度B、磁场强度H、矢量磁位A的study

学完电磁场很久了但是对电磁场中磁感应强度B⃗\vec{B}B、磁场强度HHH、矢量磁位A⃗\vec{A}A,这几个变量所表征的含义一直很模糊,所以就总结了一下

sinat_42386289的博客 1万+

DBeaver配置本地mysql-connector驱动文件

本文摘要:介绍了数据库驱动管理的基本操作步骤:1)新建驱动管理器,填写MySQL驱动名称、类名和类型;2)添加本地MySQL驱动文件;3)创建数据库连接并测试。适用于MySQL5.x和8.x版本,帮助用户快速配置数据库连接。

litlit023的专栏 1694

ExtJS中Ext.data.Store的使用

Ext.data.Store是EXT中用来进行数据交换和数据交互的标准中间件,无论是Grid还是ComboBox,都是通过它实现数据读取、类型转换、排序分页和搜索等操作的。 Ext.data.Store中有一个Ext.data.Record数组,所有数据都存放在这些Ext.data. Record实例中,为后面的读取和修改操作做准备。 Ext.data.Store的基本用法 在使用之前,首先要创建...

prxhlirr的博客 824

30、航空公司调度问题的数学模型解析

本文详细解析了航空公司调度问题中的核心数学模型,包括航班时刻表生成、机组人员排班和飞机调度的建模方法与求解技术。通过定义变量、约束条件及目标函数,结合线性规划、整数规划等方法,帮助航空公司实现高效调度。文章还探讨了模型的优化策略、简化方法以及实际应用案例,为提升航空运营效率提供了理论支持和实践指导。

beer8的博客 259

ExtJs之Ext.data.Store详解(转载)

Ext.data.Store是EXT中用来进行数据交换和数据交互的标准中间件,无论是Grid还是ComboBox,都是通过它实现数据读取、类型转换、排序分页和搜索等操作的。 Ext.data.Store中有一个Ext.data.Record数组,所有数据都存放在这些Ext.data. Record实例中,为后面的读取和修改操作做准备。 Ext.data.Store的基本用法 在使用之前,首先要创...

正走向大牛的菜鸟 4274

置顶必读(1) |《滚雪球学SpringBoot 3.x》· 高质量专栏介绍,你值得拥有!

《滚雪球学SpringBoot 3.x》 并不是普通的技术讲解合集,它是专为开发者精心设计的系统化学习路径。通过不断“滚动学习”,我们将带领你从基础入门到高阶应用,从理解每一行代码到设计和优化大规模分布式系统,最终帮助你成长为一位精通 spring架构 的工程师。

**My Coding Family** 12万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

extjs Ext.data.Store store学习

⭐️来自很多年前的extjs笔记,只是一个归档,不做更新!⭐️

西京刀客 2207

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ExtJs之Ext.data.Store

本文是拷贝过来的 效果不好 附原链接:点击打开链接http://www.cnblogs.com/zhangqifeng/archive/2009/05/25/1489162.html 因为上次用过Ext.data.Store,觉得挺重要的, 故转载了一篇http://blog.c...

chuanlei8323的博客 200

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ext.data.store ajax,设置 Ext.data.Store 传参的请求方式

1.extjs 给怎么给panel设背景色设置bodyStyle:'background:#ffc;padding:10px;',var resultsPanel = Ext.create('Ext.panel.Panel', {title: 'Results',width: 600,height: 400,renderTo: Ext.getBody(),bodyStyle: 'backgroun...

weixin_28750663的博客 1056

Extjs Store 的用法详解

  Extjs Store 的用法详解 标签: extjs 2012-11-09 23:19 13342人阅读 评论(1) 收藏 举报  分类: Extjs(49)  版权声明:本文为博主原创文章,未经博主允许不得转载。 Ext.data.Store的基本用法 在使用之前,首先要创建一个Ext.data.Sto...

tanghuan0827的博客 1678

ExtJS教程(6)---Ext.data.Store

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jaune161/article/details/36057381 Store通常与Model结合使用,Store是Model的集合 Ext.define('User'...

chongmiandun5173的博客 456
上一篇: 输入一串字母,统计每个字母的出现的个数并将出现次数最多的字母输出
下一篇: Spring中@Autowired注解、@Resource注解的区别
eclipse_wss
博客等级 码龄12年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值