[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
缓存,提高上下翻页的显示速度
|