浏览 3817 次
锁定老帖子 主题:EXT 分页效能问题 解决源代码!
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-11
业务代码!:
XMLReader = Class.create(XML) ; XMLReader.construct = function($self , $class){ var $point = -1 ; var $database = null ; var $rows = null ; var $textDoc = null ; this.next = function(){ if($point == this.count()) return false ; $point ++ ; if($point < this.count()) return true ; else return false ; } this.first = function(){ $point = 0; } this.last = function(){ $point = this.count() - 1 ; } this.previous = function(){ if($point == -1) return false ; $point -- ; if($point >= 0) return true ; else return false ; } this.getItem = function(_key){ try{ if($point == -1) var _row = $self.super0.selectSingleNode("/table/row[1]") ; else var _row = $self.super0.selectSingleNode("/table/row[" + ($point + 1) + "]") ; return _row.getAttribute(_key) ; }catch(_err){ return "" ; } } this.count = function(){ return $self.super0.getRoot().getNodes().length; } this.initialize = function(_rs , _type , _start , _limit){ this.registerClass("core.XMLReader") ; try{ if(_rs.getType() == "core.XML"){ $self.super0.initialize(_rs.getXML()) ; return ; } }catch(_err){ } if(_start != null && _limit != null){ var _cnt = 0 ; _start = _start.toInteger() ; var _end = _start + _limit.toInteger() - 1 ; } $self.super0.initialize("<table/>") ; var _root = this.getRoot() ; while(!_rs.EOF){ if(_start != null && _end != null){ if(_cnt < _start || _cnt > _end){ _rs.MoveNext() ; _cnt ++ ; continue ; } } var _row = this.newNode("row") ; _row.setAttribute("index" , _cnt) ; for(var _i = 0 ; _i < _rs.fields.Count ; _i ++){ if(_rs.fields.Item(_i).Type == 135) if(String(_rs.fields.Item(_i).Value).trim() == null) var _data = null ; else var _data = String(_rs.fields.Item(_i).Value).getDate().formatString() ; else var _data = String(_rs.fields.Item(_i).Value).trim() ; if(_data != null) if(_type != "text") _row.setAttribute(String(_rs.fields.Item(_i).Name) , _data) ; else _row.newNode(String(_rs.fields.Item(_i).Name) , _data) ; else if(_type != "text") _row.setAttribute(String(_rs.fields.Item(_i).Name) , "") ; else _row.newNode(String(_rs.fields.Item(_i).Name)) ; } _root.pushNode(_row) ; _rs.MoveNext() ; _cnt ++ ; } _root.setAttribute("count" , _cnt) ; _rs.Close() ; } this.getXML = function(){ return $self.super0.getXML() ; } } 调用代码: var _writer = new Writer(_msg.getVariable("pnId" , true)) ; Write.writeXML(_writer.documentView(_msg.getVariable("start" , true) , _msg.getVariable("limit" , true))) ; 改方法采用ASPSERVER框架! 这是具体分页代码部分! 经测试 ,完全没效能问题! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-11
Asp?
是Asp inJScript吗? |
|
返回顶楼 | |
发表时间:2007-10-11
是的,是ASP for JavaScript,这个是我们公司的"ASP程序员向.NET程序员技术培训过渡计划"的一部分.
|
|
返回顶楼 | |
发表时间:2007-10-11
关于Ext的分页的效率问题,根据我对于Ext底层编码的应用经验,其是根据数据集的索引来进行分页的,换句话说,使用传统的SQL分页查询是可以解决这个问题,但编写复杂,而如果将整表数据全部导出,又会出现网络传输堵塞问题,考虑到以上的两种考虑,设计了一种可以将"数据全部查询,但部分解析"的应用思维,代码本贴所示,这也是AspServer框架代码的一个分支开发计划,即考虑如何使用纯粹的外部代码来实现高效的,多种数据库读写效率问题.
Struct与Spring是JSP应用中的两种流行的组件部署应用框架,Hibernate则是基于Java环境的数据库持久层框架,在传统编写Web程序中,它们的确发挥了很大的作用,不过,从AJAX的固有特点来看,它们在一些方面就不是那么优秀了,可以考虑另外一种JSP的AJAX框架——DWR,在与Ext的结合使用中,已经有了不少成功的案例。 |
|
返回顶楼 | |