DWR2与Extjs2集成:分页控件实现与JSON处理
在DWR2(Direct Web Remoting 2)和ExtJS2(Extensible JavaScript Library)的组合中,分页控件是一个关键组件,用于实现动态数据加载和展示,特别是在Web应用程序中处理大量数据时。DWRProxy是ExtJS中的一个定制化代理类,它扩展了Ext.data.DataProxy的基础功能,以便与DWR集成,提供高效的数据请求处理。 DWRProxy的主要作用是封装DWR的远程调用,使得前端的ExtJS组件能够通过JSON格式发送请求到服务器,获取数据集并处理分页逻辑。其构造函数接受一个配置参数`fn`,这个参数通常包含了DWR的远程方法名,用于执行实际的数据操作。 `toJSON`方法是DWRProxy的一个重要成员函数,它负责将接收到的文本转换成符合ExtJS读取器(reader)期望的格式。它会清理文本中的换行符,并检查是否为有效的JSON对象。如果文本看起来像一个完整的JSON对象,会将其包装在一个数组中,因为ExtJS期望的是单个对象而不是整个数据集。 `load`方法则是DWRProxy的核心,它负责发起数据请求并处理响应。该方法首先检查是否应该触发"beforeload"事件,如果得到允许,会调用DWR的回调函数`dwrcallback`。在这个回调中,会尝试读取返回的DWR响应中的数据,通过`reader.readRecords`方法解析数据并将其转换成ExtJS能理解的形式。如果在这个过程中遇到错误,会触发"loadexception"事件,并传递错误信息给调用者。 在使用DWR2 + ExtJS2的分页控件时,开发人员通常会创建一个DWRProxy实例,配置好与后端服务的通信方式,然后在分页组件上设置这个代理。分页控制会自动处理每页的请求,根据用户交互(如翻页、查看更多等)动态调整参数,向服务器请求相应页的数据。这不仅提高了用户体验,也优化了服务器资源的利用,避免了一次性加载所有数据导致的性能问题。 DWRProxy在DWR2和ExtJS2的框架下扮演着连接前端与后端的重要角色,它简化了数据请求和处理的过程,确保了分页功能的顺利实现。通过合理地配置和使用,开发者可以构建出高效、易维护的Web应用。
+++++++++++++++++++++++++++++Ext.data.DWRProxy+++++++++++++++++++++++++++++++++++++
Ext.data.DWRProxy = function(config) {
Ext.data.DWRProxy.superclass.constructor.call(this);
this.fn = config.fn;
};
Ext.extend(Ext.data.DWRProxy, Ext.data.DataProxy, {
toJSON : function(text) {
alert(text);
text = text.replace(/\n/g, ' ');
text = text.replace(/\r/g, ' ');
if (text.match(/^\s*\{.*\}\s*$/)) {
text = '[' + text + '][0]';
}
return eval(text);
},
load : function(params, reader, callback, scope, arg) {
//alert(dwr.util.toDescriptiveString(params, 3));
params = params || {};
if (this.fireEvent("beforeload", this, params) !== false) {
var proxy = this;
// dwr回调函数
dwrcallback = function(ret) {
//alert(dwr.util.toDescriptiveString(ret.pageResults[0],3));
var result;
try {
} catch (e) {
this.fireEvent("loadexception", this, arg, null, e);
callback.call(scope, null, arg, false);
return;
}
//alert(dwr.util.toDescriptiveString(result,4))
callback.call(scope, result, arg, true);
}
//alert(dwr.util.toDescriptiveString(params,2))
// 需要将参数加入到调用参数
var callParams = new Array();
for (var i = 0; i < params.length; ++i) {
callParams.push(params[i]);
}
// 将回调函数加入的参数数组
callParams.push(dwrcallback);
//alert(dwr.util.toDescriptiveString(callParams, 3));
this.fn.apply(this, callParams);
}
}
});
+++++++++++++++++++++++++++++Ext.PagingToolbarExt+++++++++++++++++++++++++++++++++++++
/*
* Ext JS Library 2.1
剩余18页未读,继续阅读
- 粉丝: 2
- 资源: 8
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全