1、创建Ext.data.Model数据实体模型
- //注册用户数据模型User
- Ext.regModel('User', {
- fields: [//定义模型字段
- {name: 'name', type: 'string'},
- {name: 'age', type: 'int'},
- {name: 'phone', type: 'string'}
- ]
- });
- //创建User模型的实体对象
- var user = Ext.ModelMgr.create({
- name : 'tom',
- age : 24,
- phone: '555-555-5555'
- }, 'User');
- //获取员工姓名
- alert(user.get('name'));
2、在模型中进行数据验证
- //定义默认的验证提示信息
- Ext.data.validations.presenceMessage = '必须是有效值。';
- Ext.data.validations.lengthMessage = '长度错误。';
- Ext.data.validations.formatMessage = '格式错误。';
- Ext.data.validations.inclusionMessage = '没有包括在可接受的数据中。';
- Ext.data.validations.exclusionMessage = '不是可接受的值。';
- //自定义数值范围验证
- Ext.apply(Ext.data.validations,{
- number : function(config, value){
- if (value === undefined) {
- return false;
- }
- var min = config.min,
- max = config.max;
- if ((min && value < min) || (max && value > max)) {
- return false;
- } else {
- return true;
- }
- },
- numberMessage : '数值范围错误。'
- });
- //注册用户数据模型User
- Ext.regModel('User', {
- fields: [//定义模型字段
- {name: 'name', type: 'string'},
- {name: 'age', type: 'int'},
- {name: 'phone', type: 'string'},
- {name: 'gender', type: 'string'},
- {name: 'username', type: 'string'},
- {name: 'alive', type: 'boolean', defaultValue: true}
- ],
- validations: [
- {type: 'presence', field: 'age'},
- {type: 'number', field: 'age', min : 30},
- {type: 'length', field: 'name', min: 2},
- {type: 'inclusion', field: 'gender', list: ['男', '女']},
- {type: 'exclusion', field: 'username', list: ['admin@xx.xx', 'user@xx.xx']},
- {type: 'format', field: 'username',
- //校验用户名是否为电子邮件格式
- matcher: /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/
- }
- ]
- });
- //创建User模型的实体对象
- var user = Ext.ModelMgr.create({
- name : 'tom',
- age : 24,
- gender : 'man',
- username: 'abc'
- }, 'User');
- //执行数据验证
- var errors = user.validate();
- //获取验证信息
- var message = [];
- errors.each(function(v){
- message.push(v.field+' : '+v.message)
- });
- alert(message.join('\n'));
3、在模型中通过代理加载数据
- //注册用户数据模型User
- Ext.regModel('User', {
- fields: [//定义模型字段
- {name: 'name', type: 'string'},
- {name: 'age', type: 'int'},
- {name: 'id', type: 'int'}
- ],
- //配置数据代理
- proxy: {
- type : 'ajax',
- url : 'userServer.jsp'
- }
- });
- var user = Ext.ModelManager.getModel('User');
- //通过代理读取数据
- user.load(1, {
- success: function(rec) {
- alert(rec.get('name'));
- }
- });
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%@ page import="java.util.*" %>
- <%
- String userId = request.getParameter("id");
- response.setContentType("application/json;charset=UTF-8");
- response.getWriter().write("{id : "+userId+", name: 'user"+userId+"'}");
- %>
4、模型间的一对多关系
- //注册用户数据模型User
- Ext.regModel('User', {
- fields: [//定义模型字段
- {name: 'name', type: 'string'},//用户名称
- {name: 'id', type: 'int'}//用户id
- ],
- //User与Product是一对多关系
- hasMany: {model: 'Product', name:'getProducts',autoLoad : false},
- proxy: {
- type : 'ajax',
- url : 'userServer.jsp'
- }
- });
- //注册产品数据模型Product
- Ext.regModel('Product', {
- fields: [//定义模型字段
- {name: 'id', type: 'int'},//产品id
- {name: 'title', type: 'string'},//产品名称
- {name: 'user_id', type: 'int'}//用户id
- ],
- proxy: {
- type : 'ajax',
- url : 'ProductServer1.jsp',
- reader: {
- type: 'json',
- root: 'products'
- }
- }
- });
- //创建User实例
- var user = Ext.ModelManager.getModel('User');
- //读取id为1的User实例
- user.load(1, {
- success: function(rec) {
- //获取user_id为1的产品Store
- var products = rec.getProducts();
- //加载user_id为1的产品数据
- products.load({
- callback : function(records, operation, success){
- var msg = [];
- for(var i = 0; i < records.length; i++){
- var rec = records[i];
- msg.push('产品名称:'+rec.get('title')+' 用户id:'+rec.get('user_id'));
- }
- alert(msg.join('\n'));
- }
- });
- }
- });
ProductServer1.jsp
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%@ page import="net.sf.json.JSONObject" %>
- <%@ page import="net.sf.json.JSONArray" %>
- <%
- String filter = request.getParameter("filter");
- JSONArray filters = JSONArray.fromObject(filter);
- int userId = filters.getJSONObject(0).getInt("value");
- response.setContentType("application/json;charset=UTF-8");
- String result = "{products:[{id : 1, title: '产品1', user_id : "+userId+"}, {id : 2, title: '产品2', user_id : "+userId+"}]}";
- System.out.println("result="+result);
- response.getWriter().write(result);
- %>
5、模型间的多对一关系
- //注册分类数据模型Category
- Ext.regModel('Category', {
- fields: [//定义模型字段
- {name: 'type', type: 'string'},//产品类型名称
- {name: 'id', type: 'int'}//产品类型id
- ],
- proxy: {
- type : 'ajax',
- url : 'CategoryServer.jsp'
- }
- });
- //注册产品数据模型Product
- Ext.regModel('Product', {
- fields: [//定义模型字段
- {name: 'id', type: 'int'},//产品id
- {name: 'title', type: 'string'},//产品名称
- {name: 'category_id', type: 'int'}//用户id
- ],
- belongsTo : 'Category'
- });
- //创建product实例
- var product = new Product({
- id: 100,
- category_id: 1,
- title: '产品1'
- });
- product.getCategory(function(category, operation){
- //获取类型名称
- alert(category.get('type'));
- });
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%
- String categoryId = request.getParameter("id");
- response.setContentType("application/json;charset=UTF-8");
- response.getWriter().write("{id : "+categoryId+", type: '产品类型"+categoryId+"'}");
- %>
6、Ext.data.proxy.Memory示例
- //创建数据模型
- Ext.regModel('User', {
- fields: ['id','name','age']
- });
- //定义内存数据变量
- var userData = {
- users : [
- { id: 1, name: '张三', age: 20 },
- { id: 2, name: '李四', age: 30 },
- { id: 3, name: '王五', age: 40 }
- ]
- };
- //创建memory代理
- var memoryProxy = new Ext.data.proxy.Memory({
- model : 'User',
- reader: {
- root: 'users'
- },
- data : userData
- });
- //读取数据
- memoryProxy.read(new Ext.data.Operation(), callBack)
- //数据读取之后的回调函数
- function callBack(result){ //load方法的回调函数
- var totalRecords = result.resultSet.total;
- alert('读取内存数据,记录总是:'+totalRecords);
- }
7、Ext.data.proxy.Ajax示例
- //创建数据模型
- Ext.regModel('Person', {
- fields: ['name','age']
- });
- //创建Ajax代理
- var ajaxProxy = new Ext.data.proxy.Ajax({
- url : 'personServer.jsp',
- model: 'Person',
- reader: 'json'
- });
- //创建请求参数对象
- var operation = new Ext.data.Operation({
- action: 'read'//设置请求动作为read
- });
- //读取数据
- ajaxProxy.doRequest(operation,callBack);
- //doRequest方法的回调函数
- function callBack(operation){
- //获取原始响应数据
- var responseText = operation.response.responseText;
- //获得记录总数
- var totalRecords = operation.resultSet.totalRecords;
- //获得记录数组
- var records = operation.resultSet.records;
- alert('使用Ajax代理读取远程数据,记录总是:'+totalRecords);
- }
- <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
- <%
- response.setContentType("application/json;charset=UTF-8");
- String result = "[{name: '张三', age : 20}, {name: '李四', age : 30}]";
- response.getWriter().write(result);
- %>
8、Ext.data.reader.Json示例
- //JSON格式的用户及订单信息
- var userData = {
- "total" : 2000,
- "users": [{
- "id": 123,
- "name": "张三",
- "orders": [{
- "id": 50,
- "total" : 100
- }]
- }]
- }
- //定义用户User模型
- Ext.regModel("User", {
- fields: [ 'id', 'name' ],
- hasMany: 'Order'//定义User与Order之间的一对多关系
- });
- //定义订单Order模型
- Ext.regModel("Order", {
- fields: [ 'id', 'total' ],
- belongsTo: 'User'//定义Order与User之间的多对一关系
- });
- //创建memory代理
- var memoryProxy = new Ext.data.proxy.Memory({
- model : 'User',
- reader: {
- type: 'json',//Ext.data.reader.Json读取器
- root: 'users'
- },
- data : userData
- });
- //读取数据
- memoryProxy.read(new Ext.data.Operation(), callBack)
- //数据读取之后的回调函数
- function callBack(result){
- //获取总记录数
- var count = result.resultSet.total;
- //获取第一个用户信息
- var user = result.resultSet.records[0];
- //获取该用户的第一个账单信息
- var order = user.orders().getAt(0);
- alert('总记录数:'+count+
- '\n姓名:'+user.get('name')+
- '\n账单金额:'+order.get('total'));
- }
9、读取复杂的JSON数据
- //JSON格式的用户及订单信息
- var userData = {
- "users": [{
- "searchDate" : "2011-04-24",//查询时间
- "role" : "admin",//查询人角色
- "info" : {
- "id": 123,
- "name": "张三"
- }
- }]
- }
- //定义用户User模型
- Ext.regModel("User", {
- fields: [ 'id', 'name' ]
- });
- //创建memory代理
- var memoryProxy = new Ext.data.proxy.Memory({
- model : 'User',
- reader: {
- type: 'json',//Ext.data.reader.Json读取器
- root: 'users',
- record : 'info'//定位有效数据的位置
- },
- data : userData
- });
- //读取数据
- memoryProxy.read(new Ext.data.Operation(), callBack)
- //数据读取之后的回调函数
- function callBack(result){
- //获取第一个用户信息
- var user = result.resultSet.records[0];
- alert('姓名:'+user.get('name'));
- }
10、Ext.data.Store示例
- //定义用户User模型
- Ext.regModel("User", {
- fields: ['name', 'age' ],
- proxy: {
- type: 'memory'
- }
- });
- //创建数据集对象
- var myStore = new Ext.data.Store({
- autoLoad: true,
- data : [{name: '张三', age : 20},
- {name: '李四', age : 30}],
- model: 'User'
- });
- //遍历Store中的记录
- var msg = ['遍历Store中的记录:'];
- myStore.each(function(rec){
- msg.push('姓名:'+rec.get('name')+' 年龄:'+rec.get('age'));
- });
- alert(msg.join('\n'));
11、Ext.data.ArrayStore示例
- //定义用户User模型
- Ext.regModel("User", {
- fields: ['name', 'age' ],
- proxy: 'memory'
- });
- //创建ArrayStore数据集对象
- var myStore = new Ext.data.ArrayStore({
- autoLoad: true,
- data : [['张三',20],['李四',30]],//数组数据
- model: 'User'
- });
- //遍历Store中的记录
- var msg = ['遍历ArrayStore中的记录:'];
- myStore.each(function(rec){
- msg.push('姓名:'+rec.get('name')+' 年龄:'+rec.get('age'));
- });
- alert(msg.join('\n'));
相关推荐
1. 创建`Ext.data.Store`实例,定义数据模型和数据源,可以是JSON对象、XML文件或远程API。 2. 使用`Ext.grid.column.Column`配置列的显示,包括字段名、标题、宽度等属性。 3. 配置`grid.Panel`,指定数据存储、列...
3. **数据绑定**:EXTJS4支持双向数据绑定,使得视图与模型之间的数据同步变得简单,大大减少了手动更新视图的工作。 4. **高级表格和网格**:EXTJS4的GridPanel组件提供强大的数据展示和操作功能,支持分页、排序...
随便上传的一个阅读文档。不要随便下载!呵呵!试试看吧!
在这个例子中,Model定义了数据模型,View负责呈现数据,而Controller作为中间人,处理用户交互和数据更新。 2. **Grid组件**: Grid组件是ExtJS的核心组件之一,用于展示结构化数据。它提供了诸如分页、排序、...
其次,数据绑定和模型层的强化是ExtJS4的另一大亮点。新版本引入了Model、Store和Proxy的概念,它们共同构建了一个强大的数据管理框架。Model用于定义数据结构和验证规则,Store则作为数据容器,负责加载、存储和...
5. **ViewModel(视图模型)**:虽然在ExtJS 4中不是必需的,但ViewModel是推荐的最佳实践,特别是在数据绑定变得复杂的场景下。ViewModel提供了一种方式来链接模型数据和视图组件,使得数据可以直接在视图中呈现,...
在ExtJS 4中,模型负责数据管理,视图负责用户界面展示,而控制器则作为两者之间的桥梁,处理用户的交互并协调数据流动。 在货物处理的CRUD操作中: 1. **创建(Create)**:当用户输入新货物信息时,这些信息会被...
在ExtJS中,数据模型定义了数据对象的结构和属性。创建一个模型类,比如`Ext.define('User', {extend: 'Ext.data.Model', fields: ['name', 'email']})`,其中`fields`数组定义了模型的属性名。 2. 数据存储...
ExtJS4的数据管理是基于MVC(模型-视图-控制器)架构的,提供了一种结构化的方式来处理和显示数据。`Store`对象是数据的核心,它可以加载和存储数据,与视图进行绑定。此外,`Model`定义了数据字段和验证规则,而`...
6. **Data Binding(数据绑定)**:ExtJS4的一个重要特性,允许UI元素与后台数据模型实时同步,当选择新的图片时,ImageViewer会自动更新以显示新图片。 7. **Events(事件)**:通过监听用户的交互行为,如点击...
总的来说,ExtJS4 TreeGrid实例的创建涉及模型定义、数据存储、列配置和面板创建等多个环节,能够有效地呈现层次结构的报表数据,提供丰富的用户交互体验。在实际应用中,你可能需要根据具体需求调整和扩展这个基础...
- Models:在 ExtJS 中,模型定义了数据对象的结构和验证规则。它们与服务器端的数据接口进行通信,负责数据的获取和更新。 - Stores:存储器是模型的集合,用于管理一组模型实例,提供数据的加载、排序、过滤等...
2. **经销商模型.erwin** - 另一个Erwin文件,可能描述了系统中与经销商相关的数据模型,这可能意味着系统支持多级分销或者合作伙伴管理。 3. **authority_data.sql** 和 **authority.sql** - 这两个SQL文件可能...
通过Ext.data.Model类,你可以定义一个数据模型,并使用Store来管理这些模型实例,实现数据的加载、保存和同步。 2. **视图(View)**:视图负责显示数据和响应用户交互。在ExtJS中,视图通常是组件(Component)...
"DB"文件夹下的建表语句是初始化数据库结构的关键,可以了解到系统数据模型的设计。 为了实现图片上传功能,EXTJS4提供了一种叫做FileField的组件,它支持文件选择和上传。后台JAVA服务接收这些文件,通常会将其...
"Ext.data.Model"定义了数据模型,与后端数据进行交互的基础。在阅读API时,注意理解类的继承关系、配置项的作用以及事件监听的使用。 在实际开发中,部署环境的选择也非常重要。虽然EXTJS4的示例可以在本地运行,...
在`Ext.onReady`的回调函数内,你可以编写代码来实例化窗口、面板、表格等组件,定义数据模型和数据存储,以及设置布局和事件监听器。 总结起来,搭建ExtJS4开发环境主要包括以下几个步骤: 1. 下载并解压ExtJS4的...
在这个"EXTJS4+STRUTS2+JAVA增删改查"的例子中,我们将深入探讨这三个技术如何协同工作,实现数据的动态管理。 EXTJS4是一个强大的JavaScript库,主要用于创建桌面级的Web应用程序。它提供了丰富的组件库,如表格、...
### Extjs 学习笔记之九:数据模型(上) ...以上内容仅为Extjs数据模型的基础介绍。接下来的文章中,我们将继续深入探讨数据解析器(DataReader)和数据集(Store),以及它们在实际项目中的应用技巧。
在实际项目中,你可能还会遇到数据加载、异步通信(使用Ajax)和状态管理等问题,ExtJS4提供了解决这些问题的强大工具,如Store和Proxy。同时,不要忽视性能优化,合理使用组件配置和内存管理技巧,可以使你的应用...