`
ppkosd
  • 浏览: 89067 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

EXT 分页效能问题 解决源代码!

阅读更多
业务代码!:

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框架!  这是具体分页代码部分! 经测试 ,完全没效能问题!
分享到:
评论
3 楼 ppkosd 2007-10-11  
关于Ext的分页的效率问题,根据我对于Ext底层编码的应用经验,其是根据数据集的索引来进行分页的,换句话说,使用传统的SQL分页查询是可以解决这个问题,但编写复杂,而如果将整表数据全部导出,又会出现网络传输堵塞问题,考虑到以上的两种考虑,设计了一种可以将"数据全部查询,但部分解析"的应用思维,代码本贴所示,这也是AspServer框架代码的一个分支开发计划,即考虑如何使用纯粹的外部代码来实现高效的,多种数据库读写效率问题.
Struct与Spring是JSP应用中的两种流行的组件部署应用框架,Hibernate则是基于Java环境的数据库持久层框架,在传统编写Web程序中,它们的确发挥了很大的作用,不过,从AJAX的固有特点来看,它们在一些方面就不是那么优秀了,可以考虑另外一种JSP的AJAX框架——DWR,在与Ext的结合使用中,已经有了不少成功的案例。
2 楼 ppkosd 2007-10-11  
是的,是ASP for JavaScript,这个是我们公司的"ASP程序员向.NET程序员技术培训过渡计划"的一部分.
1 楼 sp42 2007-10-11  
Asp?
是Asp inJScript吗?

相关推荐

Global site tag (gtag.js) - Google Analytics