嘻嘻嘻

<td width="20" scope="col" style="cursor:hand" οnclick="expandAssetDetail(this,{'asset.resourceID':'<s:property value="resourceID"/>','resultType':'innerDetail'})"><img src="<%=contextPath%>/imagesCBB/btn_plus.gif" /></td>
     
<script language="javascript">

    var plusSrc="<%=contextPath%>/imagesCBB/btn_plus.gif";
    var minusSrc="<%=contextPath%>/imagesCBB/btn_minus.gif";
    
    var masterDetail=new MasterDetail("<%=contextPath%>","/media/queryAssetFile.action","terminalList",'<s:text name="msg.portalMS.media.no" />','<s:text name="msg.portalMS.media.error" />');
    masterDetail.detailPosition=1;
    masterDetail.loadMaskTargetId="terminalList";    
    function expandAssetDetail(tdEl,requestData)
    {
        //alert(requestData);
        masterDetail.expandDetail(tdEl,requestData);
    }

</script>


/**
 * 用于嵌套表格的显示
 * 包括动态创建/删除明细行,ajax请假明细列表数据
 * @author 908247
 * @param {Object} _basePath 系统上下文
 * @param {Object} _detailURL 明细列表的action地址
 * @param {Object} _assetTabelId 明细表格grid所在table的Id
 * @param {Object} noDetailTipMsg 明细grid无数据的提示信息(作为参数方便国际化)
 * @param {Object} errMsg 请求明细grid出错的提示信息(作为参数方便国际化)
 * @memberOf {TypeName}
 * @return {TypeName}
 */
function MasterDetail(_basePath,_detailURL,_assetTabelId,noDetailTipMsg,errMsg)
{
    var _this=this;
    var isNull=function(str)
    {
        if(!str||str==null||$.trim(str)=="")
        {
            return true;
        }
        return false;
    };
    if(isNull(_basePath))
    {
        alert("请指定系统上下文_basePath!");
        return;
    }
    if(isNull(_detailURL))
    {
        alert("请指定明细表grid的URL!");
        return;
    }
    if(isNull(_assetTabelId))
    {
        alert("请指定明细表grid数据所在table的ID!");
        return;
    }
    if(isNull(noDetailTipMsg))
    {
        alert("请指定明细表无数据时的提示信息!");
        return;
    }
    if(isNull(errMsg))
    {
        alert("请指定错误提示信息!");
        return;
    }
    /**默认从第三列开始(序号从0开始计算)*/
    this.detailPosition=2;
    /**明细行的第一列是否显示左侧的边框,2层以上嵌套表格,解决细行出现边框重叠问题,2层及以内无需配置*/
    this.showDetailLeftBorder=true;
    /**detail数据加载时遮罩覆盖的对象ID*/
    this.loadMaskTargetId=null;
    /**detail数据加载时遮罩覆盖的对象,如果不指定loadMaskTargetId,则用body作为遮罩对象*/
    var loadMaskTarget=null;
    var detailURL=_basePath+_detailURL;
    var plusSimpleSrc="btn_plus.gif";
    var minusSimpleSrc="btn_minus.gif";
    var plusSrc=_basePath+'/imagesCBB/btn_plus.gif';
    var minusSrc=_basePath+'/imagesCBB/btn_minus.gif';
    /**展开单元格的名称,用于收拢明细表格时判断是否真正创建了明细tr,避免将主grid的数据行也移除了*/
    var mastdetailExpandTrName='__mastdetail_expand_tr__';
    
    /**并发控制标识*/
    var isDoing=false;
    /**
     * 展开明细表格
     * @param {Object} tdEl +-图标所在单元格,通过this指定
     * @param {Object} requestData ajax请求明细表格的参数
     * @return {TypeName}
     */
    this.expandDetail=function(tdEl,requestData)
    {
        /**在后台响应较慢时,防止重复请求*/
        if(isDoing)
        {
            return;
        }
        var trEl=$(tdEl.parentNode);
        var newSrc=changeImageSrc(tdEl);
        if(newSrc.indexOf(plusSimpleSrc)>-1)
        {
            /**收拢时移除tr,并进行容错处理,如果未创建明细行则不处理*/
            removeDetail(trEl);
            return;
        }
        
        queryDetail(trEl,requestData);
        
        /**
         * 发起ajax请求,并处理错误信息
         * @param {Object} trEl 动态创建行(用于嵌套明细表格)
         * @param {Object} requestData
         */
        function queryDetail(trEl,requestData)
        {
            /**查询遮罩目标对象*/
            isDoing=true;
            if(loadMaskTarget==null)
            {
                if(_this.loadMaskTargetId==null)
                {
                    loadMaskTarget=$("body");
                }
                else
                {
                    loadMaskTarget=$("#"+_this.loadMaskTargetId);
                }
            }
            loadMaskTarget.mask("Loading...");
            
            var str=jQuery.param(requestData);
            
            $.ajax
            ({
               type: "POST",
               url:detailURL,
               data: requestData,
               dataType:"html",
               success: function(msg)
               {
                       /**并发容错处理,移除可能存在的明细内容*/
                        removeDetail(trEl);
                        /**并发容错处理,设置图标为展开*/
                        shrinkDetailImg(trEl);
                     createDetail(trEl,msg,requestData);
                     isDoing=false;
                     loadMaskTarget.unmask();
               },
               error:function(xhr, textStatus, errorThrown)
               {
                       /**并发容错处理,移除可能存在的明细内容*/
                        removeDetail(trEl);
                        /**并发容错处理,设置图标为展开*/
                       shrinkDetailImg(trEl);
                       textStatus=textStatus==null?"":textStatus;
                       var errorMsg=errMsg+":["+textStatus+"]";
                       if(xhr&&xhr!=null)
                       {
                           errorMsg+="["+xhr+"]";
                       }
                       createDetail(trEl,errorMsg,requestData);
                       isDoing=false;
                       loadMaskTarget.unmask();
               }
            });
        }
        
        /**设置图标为收拢*/
        function shrinkDetailImg(trEl)
        {
            trEl.find("td:first-child").find("img:first-child").attr("src",minusSrc);
        }
        /**移除明细内容*/
        function removeDetail(trEl)
        {
            trEl.next("tr[name='"+mastdetailExpandTrName+"']").remove();
        }
        /**
         * 创建明细表格tr并将明细信息加入tr
         * @param {Object} trEl
         * @param {Object} detailHTML
         */
        function createDetail(trEl,detailHTML,requestData)
        {
            detailHTML=$.trim(detailHTML);
            var nullData="<div style='text-align:center'>"+noDetailTipMsg+"</div>";
            if(detailHTML==null||detailHTML=="")
            {
                detailHTML=nullData;
            }
            else
            {
                /**ie不支持直接转换,很伤!先构造dom对象然后查找*/
                var span=document.createElement("span");
                span.innerHTML=detailHTML;
                var dataEl=$(span);
        
                var tableEl=dataEl.find("#"+_assetTabelId);

                
                /**一个表格都没有说明出错了*/
                if(tableEl==null||tableEl.size()<1)
                {
                    //出错了,直接输出错误消息;
                }
                else
                {
                    var trs=tableEl.find("tr");
                    if(trs==null||trs.size()<2)
                    {
                        detailHTML=nullData;
                    }
                }
            }
            var tds=trEl.children("td");
            var detailTrHTML=getDetailTrHTML(tds.size(),detailHTML);
            $(trEl).after(detailTrHTML);
            bindPagegrationEvents(trEl);
        }
        
        /**绑定分页事件*/
        function bindPagegrationEvents(trEl)
        {
            var detailTrEl=trEl.next("tr[name='"+mastdetailExpandTrName+"']");
            var currentPagegrationInfo=detailTrEl.find("span[name='masterDetailPagegrationInfo']");
            var current=parseInt(currentPagegrationInfo.attr("current"));
            /**此项数据本不应该传,建议后台查询计算*/
            var allCount=parseInt(currentPagegrationInfo.attr("allCount"));
            /**此项数据本不应该传,建议后台查询计算*/
            var allPageCount=parseInt(currentPagegrationInfo.attr("allPageCount"));
            /**此项数据本不应该传,建议后台查询计算*/
            var pageSize=parseInt(currentPagegrationInfo.attr("pageSize"));
                        
            /**跳转到第一页*/
            var masterDetailGoFirst=detailTrEl.find("span[name='masterDetailGoFirst']");
            masterDetailGoFirst.bind("click",function()
            {
                requestData['currentPage']=1;
                requestData['pageSize']=pageSize;
                queryDetail(trEl,requestData);
            });
            /**跳转到上一页*/
            var masterDetailGoBefore=detailTrEl.find("span[name='masterDetailGoBefore']");
            masterDetailGoBefore.bind("click",function()
            {
                requestData['currentPage']=current-1;
                requestData['pageSize']=pageSize;
                queryDetail(trEl,requestData);
                
            });
            /**跳转到下一页*/
            var masterDetailGoNext=detailTrEl.find("span[name='masterDetailGoNext']");
            masterDetailGoNext.bind("click",function()
            {
                requestData['currentPage']=current+1;
                requestData['pageSize']=pageSize;
                
                queryDetail(trEl,requestData);
            });
            /**跳转到最后一页*/
            var masterDetailGoEnd=detailTrEl.find("span[name='masterDetailGoEnd']");
            masterDetailGoEnd.bind("click",function()
            {
                requestData['currentPage']=allPageCount;
                requestData['pageSize']=pageSize;
                queryDetail(trEl,requestData);
            });
        }
        
        /**
        * 切换+-图标
        */
        function changeImageSrc(tdEl)
        {
            var imageObject=$(tdEl).children("img").get(0);
            imageObject=$(imageObject);
            var imgSrc=imageObject.attr("src");
            var newSrc=plusSrc;
            if(imgSrc.indexOf(plusSimpleSrc)>-1)
            {
                newSrc=minusSrc;
            }
            imageObject.attr("src",newSrc);
            return newSrc;
        }
        /**
         * 生成包含明细表格的tr
         * @param {Object} tdNum
         * @param {Object} detailHTML
         * @return {TypeName}
         */
        function getDetailTrHTML(tdNum,detailHTML)
        {
            var paddingTop="0px !important";
            var trHTML="<tr id='"+(_assetTabelId)+"' name='"+mastdetailExpandTrName+"' style='border-spacing:0px'><td colspan='"+_this.detailPosition+"' style='padding-top:"+paddingTop;
            if(!_this.showDetailLeftBorder)
            {
                trHTML+=";border-left:none !important";
            }
            trHTML+="'></td><td colspan="+(tdNum-_this.detailPosition)+" style='padding-left:2px;padding-top:"+paddingTop+";padding-right:2px;padding-bottom:2px'>"+detailHTML+"</td></tr>";
            return trHTML;
        }
    }
    /**收拢所有明细*/
    this.shrinkAll=function(thDomEl)
    {
        var tableEl=null;
        var pel=$(thDomEl);
        for(;pel!=null;pel=pel.parent())
        {
            var tagName=pel.attr("tagName");
            if(!tagName||tagName=="table"||tagName=='TABLE')
            {
                tableEl=pel;
                break;
            }
        }
        if(tableEl==null)
        {
            return;
        }
        tableEl.find("tr[name='"+mastdetailExpandTrName+"']").remove();
        tableEl.find("tr").find("td:first-child").find("img:first-child").attr("src",plusSrc);
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]:AttributeError:module ‘requests’ has no attribute ‘get’,依旧是使用单词的意思来分析报错原因 AttributeError 属性错误 module 模块 分析可以得出:属性错误:requests没有get属性 居然:好家伙,这咋办啊 hacker:慌什么慌,其实很好解决啦 解决方案 。 引用\[2\]:解决方案很简单大家注意他的模块名和文件名都是requests 居然:好像是的哦,那应该怎么解决啊 hacker:来,我给你讲讲哈 其实很简单,因为他的模块名和文件名冲突了,当他导入这个库时系统会觉得他导入的是requests.py这个文件,所有会报错,只需要把文件名修改一下就行了 居然:那应该怎么修改啊 hacker:很简单啊,鼠标右键项目,点击Refactor—>Rename修改一下点击Refator就行了 修改完再运行一下看看是否解决了 完美解决🥳🥳🥳 居然:还得是你啊 hacker:嘻嘻嘻👀👀👀 。 引用\[3\]:✅作者简介:大家好我是hacker707,大家可以叫我hacker 📃个人主页:hacker707的csdn博客 🔥系列专栏:hacker的错误集 💬推荐一款模拟面试、刷题神器👉点击跳转进入网站 。 问题:AttributeError: module 'requests' has no attribute 'Session' 回答: AttributeError: module 'requests' has no attribute 'Session'这个错误是因为在requests模块中找不到Session属性。\[1\]解决这个问题的方法是检查你的代码中是否正确导入了requests模块,并且确保你的requests版本是最新的。如果你已经正确导入了requests模块并且版本也是最新的,那么可能是因为你的代码中使用了错误的属性名。你可以查看requests模块的文档或者参考其他资源来确定正确的属性名。如果问题仍然存在,你可以尝试重新安装requests模块或者使用其他替代的HTTP请求库。\[2\] #### 引用[.reference_title] - *1* *2* *3* [【hacker的错误集】AttributeError:module ‘requests‘ has no attribute ‘get](https://blog.csdn.net/xqe777/article/details/123356700)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值