- 浏览: 1230698 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
lankk:
lankk 写道事实上,在运行String s1=new St ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
事实上,在运行String s1=new String(&qu ...
理解String 及 String.intern() 在实际中的应用 -
lankk:
同意1楼的说法http://docs.oracle.com/j ...
理解String 及 String.intern() 在实际中的应用 -
raoyutao:
...
jdk 线程池 ThreadPoolExecutor -
hongdanning:
理解了。之前困惑的一些明白了。谢谢分享。
理解String 及 String.intern() 在实际中的应用
使用Extjs进行开发系统时,客户端功能相当丰富。大部门工作都是直接从服务器获取数据再送给widgets进行显示出来。Ext.Ajax是继承Ext.data.Connection而来,而Ext.data.Store在进行加载数据时都需要用到Ext.data.Connection。
Ext.data.Connection提供以下三个事件:
1、beforerequest 请求服务器之前
2、requestcomplete 和服务通信成功后
3、requestexception 请求失败
而这三个事件分别在执行request、doFormUpload、handleResponse、handleFailure触发,所以,重写这四个函数就可以实现在请求服务过程中进行相关操作。
在这里,大家可以先看一下以下几个Function http://www.extjs.com/deploy/dev/docs/?class=Function
解决办法:
首先,在HTML文件中加入如下代码:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><div id="load-ing">
加载数据中
</div>
其loading-ing的CSS样式如下:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->#load-ing{position:absolute;right:5px;top:25px;background:rgb(221, 68, 119) url(../images/loading16.gif) no-repeat 4px 2px ;z-index: 200001;
height:20px;line-height:20px;width:150px;font-size:12px;padding-left:30px;color:#FFF; }
通过Extjs实现提示等待功能可以有以下两种解决办法:
一、可以监听beforerequest 、requestcomplete 、requestexception 事件,在每次用到Ext.Ajax或Ext.data.Connection时都写监听函数。
此方向可以解决问题,但是,每次使用Ext.Ajax或Ext.data.Connection都需要写监听函数,这样,重复工作较多。不可行
二、重写Ext.data.Connection
重写Ext.data.Connection的request、doFormUpload、handleResponse、handleFailure几个函数,在执行这几个函数之前选执行你的动作。代码如下:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Ext.override(Ext.data.Connection,{
request : Ext.data.Connection.prototype.request.createSequence(function(){
Ext.get('load-ing').show();
}),
handleResponse : Ext.data.Connection.prototype.handleResponse.createSequence(function(){
Ext.get('load-ing').hide();
}),
doFormUpload : Ext.data.Connection.prototype.doFormUpload.createSequence(function(){
Ext.get('load-ing').hide();
}),
handleFailure : Ext.data.Connection.prototype.handleFailure.createSequence(function(){
Ext.DomHelper.overwrite(Ext.get('load-ing'),'加载出错,建议 <a onclick="window.location.reload();" href="#"><b>刷新本页</b></a> !')
this.serail=this.serail-100;
})
})
问题:
在一个页面中同时执行几个request函数时,当第一个request执行完成后,“载数据中”将会被隐藏,而这时可能页面还在和服务器通信。所以这种办法并不能根据解决问题。于是想到了加入标志的方法。
当执行一次Ext.get('load-ing').show();时,标志加一,当执行一次Ext.get('load-ing').hide();时,标志减一。代码如下:
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Ext.override(Ext.data.Connection,{
serail : 0,
request : Ext.data.Connection.prototype.request.createSequence(function(){
this.serail++;
Ext.get('load-ing').show();
}),
handleResponse : Ext.data.Connection.prototype.handleResponse.createSequence(function(){
if(this.serail==1)
Ext.get('load-ing').hide();
this.serail--;
}),
doFormUpload : Ext.data.Connection.prototype.doFormUpload.createSequence(function(){
if(this.serail==1)
Ext.get('load-ing').hide();
this.serail--;
}),
handleFailure : Ext.data.Connection.prototype.handleFailure.createSequence(function(){
Ext.DomHelper.overwrite(Ext.get('load-ing'),'加载出错,建议 <a onclick="window.location.reload();" href="#"><b>刷新本页</b></a> !')
this.serail=this.serail-100;
})
})
发表评论
-
Ext Button tooltip 位置
2010-01-15 11:43 3392上面的按钮的tooltip实现在按钮的右下,出于某种 ... -
ext fly get 区别 get、getDom、getCmp、getBody、getDoc
2010-01-08 13:27 3629Ext.get()与Ext.fly()之区别 从一开始接 ... -
ext checkboxgroup 取值
2010-01-05 14:08 4240DoctorWorkStation_CommonDoctorA ... -
动态加载 js
2009-12-14 09:41 1549function onClickTreeNode(node) ... -
ext src 笔记 json string数据转换
2009-12-09 11:21 3731Ext.extend(Ext.data.JsonReader, ... -
ext tooltip
2009-12-08 14:38 1547new Ext.ToolTip({ ta ... -
ext readonly
2009-11-04 10:44 1028Ext.getCmp("account") ... -
ext 组件间访问
2009-10-20 15:15 1128userGrid.items.get(1).store.rel ... -
AsyncTreeNode的reload方法无法判断失败的请求
2009-10-17 13:41 1474selNode.reload(function(node) { ... -
关于extjs开发的方式
2009-10-13 09:42 4748用ext做开发也有2,3个月了,都是公司的人自己摸索的,现在我 ... -
ext tree 动态 右键菜单
2009-10-13 09:22 1672uniInfoPanel.on('contextmenu', ... -
ext 验证 用户名 异步
2009-09-29 16:22 4020{ id : 'account', x ... -
ExtJS 验证
2009-09-29 13:46 2255var registerForm = new Ex ... -
grid 相关 自动行号 单选checkbox
2009-09-28 16:11 1672var moduleCM = new Ext.grid.Col ... -
ext combo 提示 回车确定
2009-09-28 15:39 1731{ xtype : 'combo', ... -
combo 二级联动
2009-09-24 18:56 1347{ xtype : 'combo', ... -
在node上添加自己定义的属性 及访问
2009-09-22 17:05 1247Map map=new HashMap(); ... -
ext chart bug
2009-09-09 14:03 1587今天在关闭一个panel的时候发生了错误 错误提示在4968 ... -
Extjs 控制 grid 行 列 的显示内容
2009-08-31 14:47 1905{ header : '发送时间', ... -
Ext.Ajax.request failure options
2009-08-26 14:17 2593failure : function(response, op ...
相关推荐
总结起来,本篇内容涵盖了ExtJS中的核心数据组件,包括Ext.data.Connection的使用、Ext.data.Record的创建与操作、Ext.data.Store的配置以及数据交互的Proxy和Reader机制。这些知识是构建基于ExtJS的异步数据驱动...
本篇将重点讲解Ext.data模块,包括其基本概念、主要组件以及如何进行数据的获取和处理。 10.1 Ext.data简介 Ext.data是一个专门处理数据的模块,它包含了store、reader和proxy等组件,这些组件协同工作以确保数据在...
// 处理请求失败的情况 console.error('Request failed'); } }); ``` 然而,如果我们需要为整个应用的Ajax请求设置统一的拦截器,可以使用`Ext.Ajax.on`方法来监听`beforerequest`和`requestcomplete`事件: ``...
这通常涉及到Ajax请求,Ext3.0的Ajax组件(如Ext.Ajax或Ext.data.Connection)可以方便地实现异步通信,使得用户无需刷新页面即可完成验证。 在实际项目中,为了提高用户体验,还可以加入一些额外的功能,比如: 1...
实现文件上传进度显示的关键在于使用Ajax异步请求,`Ext.Ajax`或`Ext.data.Connection`可以用来配置这种请求。我们需要开启`async: true`,设置`params`参数以包含文件数据,同时启用`progress`事件监听,以便在每次...
相比之下,`Ext.Ajax.request()`提供了更强大的错误处理能力,能捕获各种异常,包括数据未提交到后台或action不存在的情况。这意味着开发者需要手动检查返回数据中的`success`字段来决定执行哪条路径,同时也给予了...
与直接使用 **Ext.lib.Ajax** 相比,**Ext.data.Connection** 提供了更加高级和方便的功能,如自动处理错误和回调函数等。 ##### 创建连接实例 创建一个新的 **Ext.Connection** 实例时,可以通过构造函数配置各种...
`Ext.data.Connection`不仅能够处理基本的Ajax请求,还能通过其灵活的配置项应对各种复杂的网络通信需求。 - **初始化配置**:在创建`Ext.data.Connection`实例时,可以传入一系列配置参数,如`autoAbort`(是否...
客户端通过重载Connection类来拦截所有数据交互,并在需要的时候处理权限验证失败的逻辑。服务器端则需要为每个请求提供定制化的JSON数据,这些数据中就包含了权限控制的逻辑,比如哪些菜单项是根据当前登录用户的...
例如,可以使用`Ext.form.Panel`创建表单,`Ext.form.field.Text`定义文本输入字段,以及`Ext.Button`定义提交按钮。 登录验证的过程通常包括以下几个步骤: 1. 用户在前端填写用户名和密码。 2. 用户点击登录按钮...
// 登录失败处理 } }); ``` 在ASP后台,`login.asp`页面接收到这些参数后,需要进行身份验证。ASP是一种服务器端脚本语言,可以与数据库交互,检查用户名和密码是否匹配。以下是一个简单的示例: ```vbscript ...
// 下载失败,处理错误 } } } ``` **注意事项** 1. 使用AsyncTask时,要确保在主线程中启动任务(`execute()`方法)。 2. Android系统会根据内存情况自动取消长时间运行的AsyncTask,因此需要处理` onCancelled...
如果失败,输出错误信息。 6. **执行数据库操作**: - 示例中提到了对名为"S"表的操作,这通常涉及编写SQL查询或存储过程,并使用`Statement`、`PreparedStatement`或`CallableStatement`对象来执行。 - 对数据的...
- 如果手动设置,将`mysql-connector-j-8.2.0.jar`放在`JAVA_HOME/jre/lib/ext`目录下或项目根目录下的`lib`文件夹,并在`CLASSPATH`环境变量中添加该路径。 2. **建立数据库连接** 要连接到MySQL,我们需要使用`...
- Microsoft ADO Ext. 2.1 for DDL and Security. - Microsoft Jet and Replication Objects 2.1 Library. 2. **创建ADO连接对象**: - 在Visual Basic编辑器中新建一个模块。 - 定义一个ADO连接对象,例如使用...
- 创建数据库连接:`Connection conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=;user=;password=<password>");` - 编写SQL语句并执行 - 处理结果集 - 关闭连接 7. **异常...
- 编写Java代码以测试数据库连接,使用`Class.forName()`加载驱动,`DriverManager.getConnection()`建立连接。 9. **处理常见问题**: - 如果出现“链接失败”的错误,检查`Class.forName()`的参数是否正确,...
1. **将驱动包放置于正确位置**:将MySQL驱动包(如mysql-connector-java-5.0.8-bin.jar)放置于JDK的`jre\lib\ext\`目录下。 2. **配置开发环境**:确保IDE(如Eclipse、IntelliJ IDEA等)的项目构建路径中包含了...