- 浏览: 77066 次
文章分类
最新评论
-
angryfrank:
收获良多,赞
ExtJS4学习笔记十--Grid使用 -
万俟辉夜:
楼主知不知道怎么通过已知的行数和列数取得grid中该单元格的信 ...
ExtJS4学习笔记十--Grid使用 -
endual:
请问博主,我是用mvc的,请问form.panel怎么绑 ...
ExtJS4学习笔记九--数据模型的使用 -
365353650:
<%@ page language=" ...
ExtJS4学习笔记九--数据模型的使用 -
binjoo:
有password类型的文本框??
ExtJS4学习笔记二--表单控件相关
1、创建Ext.data.Model数据实体模型
2、在模型中进行数据验证
3、在模型中通过代理加载数据
4、模型间的一对多关系
5、模型间的多对一关系
6、Ext.data.proxy.Memory示例
7、Ext.data.proxy.Ajax示例
8、Ext.data.reader.Json示例
9、读取复杂的JSON数据
10、Ext.data.Store示例
11、Ext.data.ArrayStore示例
请问博主,
我是用mvc的,请问form.panel怎么绑定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'));
评论
2 楼
endual
2012-08-24
请问博主,
我是用mvc的,请问form.panel怎么绑定model,
你都是创建一个对象,然后调用方法就进行加载数据的。。。
1 楼
365353650
2012-07-18
<%@ 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);
%>
<%@ 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);
%>
发表评论
-
ExtJS4学习笔记十一 树控件的使用
2011-09-01 16:17 3220一、树面板简单示例 var ... -
ExtJS4学习笔记十--Grid使用
2011-09-01 15:24 16242一、grid的例: //配置表 ... -
ExtJS4学习笔记八--Template的使用
2011-09-01 14:21 54381、append方法 var tpl = new Ext.Te ... -
ExtJS4学习笔记七--事件绑定相关
2011-09-01 11:27 5964一、addListener方法 var button = Ex ... -
ExtJS4学习笔记六--一些小知识点
2011-09-01 09:31 49311、获取页面上的HTML元素,并进行处理,使用Ext.get( ... -
ExtJS4学习笔记五--面板使用
2011-08-31 17:06 5537标准面板: Ext.create('Ext.panel.Pan ... -
ExtJS4学习笔记四--图片上传
2011-08-31 15:51 3977前端程序: <HTML> <HEAD&g ... -
ExtJS4学习笔记三--远程访问数据源示例
2011-08-31 15:10 3292前端页面: <HTML> <HEAD&g ... -
ExtJS4学习笔记二--表单控件相关
2011-08-31 14:29 11389二、表单部分相关 <HTML> <HEA ... -
ExtJs4学习笔记一--基础知识
2011-08-31 11:42 5597开始学习ExtJs4,陆续记录学习过程,希望有所用处: 特别注 ...
相关推荐
### Extjs 学习笔记之九:数据模型(上) #### 概述 本文将深入探讨Extjs框架中至关重要的组成部分——数据模型。数据模型在Extjs中扮演着核心角色,它不仅为开发者提供了强大的数据处理能力,还极大地简化了前端与...
- `model`:指定数据模型,定义字段和数据类型。 2. **使用Paging Toolbar**: - Grid通常配合Paging Toolbar使用,它会显示页码和页大小选择器。通过将Paging Toolbar添加到Grid下方,可以方便用户导航和控制...
在本篇《ExtJS4学习笔记十一:树控件的使用》中,我们将深入探讨ExtJS框架中的树形控件(TreePanel),这是一种强大的UI组件,用于展示层次结构的数据。ExtJS4对树控件的功能进行了增强,使其更加灵活且易于使用。...
EXTJS in Action 是一本专为学习EXTJS编写的书籍,但这里我们主要关注学习笔记中的关键知识点。 首先,EXTJS的目录结构非常重要,因为它包含了所有必要的资源和源码: 1. `adapter`:这部分包含了适配器,用于将...
在探讨《ExtJS学习心得笔记》这一主题时,我们不仅会深入理解ExtJS框架的核心概念与实践技巧,还会从新手的角度出发,提炼出一系列有助于快速上手的学习策略,避免常见的学习陷阱,确保学习过程高效而有成效。...
"动态Model"可能指的是ExtJS中的数据模型如何响应数据变化和更新。"Never Stop Dreaming"可能是作者对编程的热情表达,或者是该教程的主题。 2. "EXTJS4 desktop问题 - Ext3_x求助讨论 - 中国最大的ExtJs讨论社区 ...
本学习笔记将深入探讨ExtJS 2.1的关键概念和技术,帮助读者掌握这个框架的核心要素。 1. **ExtJs 结构树** 在ExtJS中,应用程序通常基于组件树构建,每个组件都有自己的属性、方法和事件。理解这种结构对于布局...
【ExtJS 学习笔记概览】 ExtJS 是一个强大的JavaScript 框架,主要用于构建富客户端的Web应用程序。它的核心特性包括丰富的组件库、强大的数据包管理、灵活的布局系统以及面向对象的编程模型。以下是对ExtJS 入门...
10. **数据模型(Ext.data.Model)**:定义数据模型,`fields`定义了数据结构,`idProperty`指定主键字段,`Ext.data.Field`用于定义字段的属性,如`name`, `type`, `defaultValue` 和 `mapping`。 11. **数据源(Ext....
最后,`GridPanel`对象被创建,指定了渲染目标、数据源、列模型、选择模型等属性。 ### 总结 Extjs的Tab Panel和Grid组件提供了丰富的特性和自定义选项,使得开发者能够构建出既美观又功能强大的用户界面。通过...
本资源包包含了与ExtJS 3.4相关的学习资料,包括`Ext-core.pdf`、`轻松搞定Extjs.pdf`以及`Extjs学习笔记.docx`,旨在帮助初学者或有经验的开发者更好地理解和掌握ExtJS 3.4。 `Ext-core.pdf` 是关于Ext Core的文档...
在ExtJS 4中,`Ext.data.Model`是数据模型的基础。开发者可以定义模型类,包含字段(fields)和验证规则。模型类通常与服务器端的API接口对应,通过Store进行数据的加载和同步。 2. 视图(View) 视图由`Ext....
这可能涉及到事件监听和数据模型的更新。 在EXTJS中,源码阅读和理解是提升技能的关键。通过阅读EXTJS库中的源码,我们可以更深入地了解这些组件的工作原理,从而更好地定制和优化我们的应用。工具如调试器和代码...
### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...
以上内容只是ExtJS框架中的一部分,实际上ExtJS还包括组件体系(如Grids、Forms、Trees等)、数据模型和Store、布局系统、Ajax通信、主题定制等多个方面。学习ExtJS可以帮助开发者快速构建功能丰富的、交互性强的Web...
例如,你可以从中学习到如何创建和配置组件,如何处理数据模型和store,以及如何使用事件监听机制来实现组件间的交互。 "24-Ext中的布局.doc"文件介绍了ExtJs中的布局管理器。在ExtJs中,布局管理器负责决定组件在...