[ECSide] 发现useAjax=true时ECside总是到后台查询两次

lping2 2009-05-12
最近在使用ECside做报表,发现每一次提交查询后台都跑了两次,执行了两次sql,
调试时发现执行的这两次sql分别是:
第一次是我提交查询的时候执行了一次,这是正常的
第二次是查询结果页面显示后,后台又执行了一次,这次是多余的,
我怀疑是EC用Ajax提交的,经过仔细检查发现时调用 Me.ajaxPrep(1); 方法的时候执行的。
请看下面几段代码:
ECSideUtil.onWindowload=function(){
	ECSideUtil.initAllGird();//看initAllGird方法
	ECSideUtil.ColmunMenu.initMe();
	ECSideUtil.NearPagesBar.initMe();
	ECSideUtil_addEvent(document.body,"click", ECSideUtil.ColmunMenu.doHideMe);
	ECSideUtil_addEvent(window,"resize",ECSideUtil.ColmunMenu.doHideMe);
};

ECSideUtil.initAllGird=function(){
	for (var girdId in ECSideList ){
		var gird=ECSideList[girdId];
		gird.init();//看init方法
	}
};

Me.init=function(){
.....
	if (Me.useAjax){
			Me.buildPrepArea();
			Me.ajaxPrepSubmit();//useAjax=true时执行了 ajaxPrepSubmit
		}
.......
}


      Me.ajaxPrepSubmit=function(){
		if (!Me.doPreload){
			return;
		}
		Me.ajaxPrep(1);
		Me.ajaxPrep(-1);
	};

    Me.ajaxPrep=function(which){

		var key;

		if (which==1){
			key='next';
		}else if (which==-1 && Me.doPreloadPrev){
			key='prev';
		}else{
			return;
		}
		Me.prepState[key]=1;
		Me.prepPage[key]=$_E(Me.pageFieldName).value/1+which;
		if (Me.prepPage[key]<1 || Me.prepPage[key]>($_E(Me.totalPagesFieldName).value/1)) {
			 return;
		}
		$_E(Me.pageFieldName).value=Me.prepPage[key];


		Me.ajaxSubmit(Me.dealResponse[key],true);//在这里执行了一次ajax提交,

		$_E(Me.pageFieldName).value=Me.prepPage[key]-which;
	};



请问执行 Me.ajaxPrep(1); Me.ajaxPrep(-1); 是做什么用的,为什么要再提交一次到后台?
vearn 2009-05-20
将<ec:table>中doPreload设置为false
lping2 2009-05-26
vearn 写道
将<ec:table>中doPreload设置为false

谢谢!
想明白一下为什么要再做一次doPreload,这个有什么意义吗?
vearn 2009-05-26
lping2 写道
vearn 写道
将<ec:table>中doPreload设置为false

谢谢!
想明白一下为什么要再做一次doPreload,这个有什么意义吗?


文档里就一句“是否使用预读取技术”,没细说。记得fins以前说过(但是搜索不到了),以limit模式同时useAjax时查询第5页的数据。ecside会偷偷的把第4页、第6页查出来缓存,你如果点下一页或上一页就可以不去数据源查询,提高了用户体验
hanfi 2009-06-17
缓存,提高上下翻页的显示速度
Global site tag (gtag.js) - Google Analytics