ecside的ajax的errorHandler的问题以及shadowRow使用的问题。
bjwulin
2007-03-24
fins,辛苦了,问题一个一个来:
1、我没有发现ecside的ajax有errorHandler的能力。我在项目中使用时,在会话过期的情况下,我做ajax的操作,会让“正在提交...”一直显示,错误无法显示给客户。因为,我正常的请求有会话拦截,因此,没有会话会提示登录。 2:那个“正在提交...”能否改成一个浮动层,浮动层作为一个窗口,显示正在提交? 3:shadowRow我看新的例子是可以至打开一个,但是我的项目却没有这个特性,后来看了下,发现那些改变高度的代码都被注释了,这样一样会带来“一页只有一行的情况下,shadowrow的行高度太小的问题”。我的项目中还没有只打开一个shadowrow,以及返回该页时,刷新打开的子行功能。 4:子行有3个回调方法,每个页面的写法差不多都一样,我想抽出来,以后好维护。下面是我抽取的代码,不能运行,提示222行的问题: var ECTableUtil = {}; ECTableUtil.firstShowShadowRow = function (formid, crow, shadowRow, eventSrc, frameId, url) { var fillShadowRow = function (originalRequest, crow, shadowRow, formid, frameId) { var text = originalRequest.responseText; if (ECTableUtil.trimString(text) != "") { shadowRow.cells[0].innerHTML = text; } else { shadowRow.cells[0].innerHTML = "\u65e0\u6cd5\u53d6\u5f97\u76f8\u5173\u4fe1\u606f(" + crow.getAttribute("recordKey") + ")."; } var shadowRowHeight = ECTableUtil.parseIntOrZero(shadowRow.cells[0].scrollHeight); shadowRow.setAttribute("shadowRowHeight", shadowRowHeight); shadowRow.cells[0].style.height = shadowRowHeight + "px"; ECTableUtil.changeListHeight("+" + shadowRowHeight, formid); FrameUtil.maximizeParentIframe(frameId); }; if (shadowRow && eventSrc) { eventSrc.innerHTML = "<img src=\"../images/table/arrowup.gif\"/>"; } shadowRow.cells[0].innerHTML = "\u6b63\u5728\u8f7d\u5165\u4fe1\u606f\uff0c\u8bf7\u7b49\u5f85"; var recordKey = crow.getAttribute("recordKey"); var resHandler = ECTableUtil.bindFunction(ECTableUtil.fillShadowRow, "", crow, shadowRow, formid, frameId); var getShadowMessage = ECTableUtil.ajaxRequest(url+recordKey, resHandler); }; ECTableUtil.hideShadowRow = function (formid, crow, shadowRow, eventSrc, frameId) { if (shadowRow && eventSrc) { eventSrc.innerHTML = "<img src=\"../images/table/arrowdown.gif\"/>"; } var shadowRowHeight = ECTableUtil.parseIntOrZero(shadowRow.getAttribute("shadowRowHeight")); ECTableUtil.changeListHeight("-" + shadowRowHeight, formid); FrameUtil.maximizeParentIframe(frameId); }; 然后我在jsp页面中调用是: function init() { var ecside=new ECSide("<ww:property value="%{#tableId}"/>"); var showFunc=ECSideUtil.bindFunction(ECTableUtil.firstShowShadowRow,'','','','',"frame1","<ww:url value='/safetyadmin/testPlan!showJuniorWorkflowState.action'/>?workflowId="); ecside.firstShowShadowRowCallBack=showFunc; ecside.showShadowRowCallBack=showFunc; ecside.hideShadowRowCallBack=ECTableUtil.hideShadowRow; ecside.init(); } 呵呵,辛苦fins,感谢下。 |
|
fins
2007-03-26
前两个问题 我已经开始计划解决 但需要一段时间 现在忙疯了
第3个 问题 你把opoa的例子里相关代码改成下面的样子 然后自己再体会一下: //====================== shadowRow 相关 ======================== // // 演示了如何利用ajax从远程取得信息填入 shadowRow 。这个信息可以是任意的合法的html代码。 function fillMemo(originalRequest,crow,shadowRow,formid){ var text=originalRequest.responseText; if (ECSideUtil.trimString(text)!=''){ shadowRow.cells[0].innerHTML=text; }else{ shadowRow.cells[0].innerHTML="无法取得相关信息("+crow.getAttribute("recordKey")+")."; } //你也可以改变列表的高度 changeListHeight参数1有5种: 整数 "+整数" "-整数" "auto" "reset" ) var shadowRowHeight=ECSideUtil.parseIntOrZero(shadowRow.cells[0].scrollHeight); shadowRow.setAttribute("shadowRowHeight",shadowRowHeight); shadowRow.cells[0].style.height=shadowRowHeight+"px"; var shadowRowHeight=ECSideUtil.parseIntOrZero(shadowRow.getAttribute("shadowRowHeight")); ECSideUtil.changeListHeight("+"+shadowRowHeight ,formid); } function testFirstShowShadowRowCallBack(formid,crow,shadowRow,eventSrc){ if (shadowRow && eventSrc){ eventSrc.innerHTML="-"; } shadowRow.cells[0].innerHTML="正在载入信息,请等待"; var recordKey=crow.getAttribute("recordKey"); var myCallBack=ECSideUtil.bindFunction(fillMemo,'',crow,shadowRow,formid); getShadowMessage=ECSideUtil.ajaxRequest(APP_PATH+"/ajaxtemplate/getMemo.jsp?easyDataAccess=myEasyDA.getUserMemo&USERID="+recordKey,myCallBack); } function testShowShadowRowCallBack(formid,crow,shadowRow,eventSrc){ // 如果你希望每次展开 shadowRow 时 都去更新,那么可以调用 FirstShowShadowRowCallBack. testFirstShowShadowRowCallBack(formid,crow,shadowRow,eventSrc); //否则 : /* if (shadowRow && eventSrc){ eventSrc.innerHTML="-"; } */ } function testHideShadowRowCallBack(formid,crow,shadowRow,eventSrc){ if (shadowRow && eventSrc){ eventSrc.innerHTML="+"; } var shadowRowHeight=ECSideUtil.parseIntOrZero(shadowRow.getAttribute("shadowRowHeight")); ECSideUtil.changeListHeight("-"+shadowRowHeight ,formid); } 第4个问题: ECTableUtil.firstShowShadowRow内定义的 var fillShadowRow = function ... 不能通过21行的 ECTableUtil.fillShadowRow 被访问到啊 直接 使用 fillShadowRow 就可以被内部访问了 |
相关讨论
相关资源推荐
- openlayers中文.rar
- OpenLayers中文文档3基本概念Basic Concepts
- Openlayers 中文示例-示例翻译
- OpenLayers:构建现代Web地图应用
- OpenLayers Api 中文文档 1Map
- Vue+OpenLayers6入门教程汇总目录,OpenLayers教程,Vue+OpenLayers中文文档,OpenLayers手册,OpenLayers6文档教程,OpenLayers中文手册
- openlayers3中文文档
- OpenLayers Api 中文文档3 MapEvent
- OpenLayers快速入门指南,OpenLayers7官方文档翻译,OpenLayers官方中文文档,OpenLayers官方中文手册
- OpenLayers Api 中文文档2 MapBrowserEvent