<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    風人園

    弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
    隨筆 - 99, 文章 - 181, 評論 - 56, 引用 - 0
    數據加載中……

    ECP--之彈出窗口解決方案(json傳遞)

            在應用中,彈出式窗口選擇數據,這種解決方案是很普遍的。
            彈出窗口,有兩種方式,一種是:showModalDialog,使用模式窗口,這種方式的好處有兩個地方,一、可以直接返回數據,二、在最前面顯示,避免用戶誤操作,窗口被遮蔽。
            但是這種方式個人感覺比較致命的地方就是因為這個是一個對話框,在form提交的時候只能新開一個頁面(可能我沒有發現其他的方式)。但是也有其他的方式,如加iframe,但是這樣感覺頁面太煩了,需要兩個頁面才能實現,比較麻煩。

            第二種:window.open,這種方式也有一個問題,就是會被當做廣告攔截掉,還算不是很致命。
    我的方案就是這個,下面上代碼。
    傳遞格式通過json,這樣我可以自己定義需要回填那些域,返回值這邊就是竟可能的完整。


    /*
    彈出窗口
    endtarget: string 目標窗口
    無返回
    */

    function fopenWindow(endtarget){
        window.open( endtarget, 
    """left=0, top=0, width=800px, height=600px, scrollbars=1, resizable=1, menubar=0, location=0, status=0, toolbar=0, " );
    }


    /*
    window.open的回調函數
    根據傳入的json格式,賦值相應的域值

    cmp:string 域id
    retval :json 所選行的數據
    無返回
    */

    function fopenCallback(cmp, retval){
        
        
    //alert("call back start." + cmp);
        var obj = eval('(' + cmp + ')');
        
        
    for(var e in obj ){
            
    //alert(obj[e]);
            document.getElementById(obj[e]).value = retval[obj[e]]
        }

    }


    window.openCallback 
    = fopenCallback;

    /* 
    獲取url上的參數
    返回:key value 對
    */

    function GetUrlParms()    
    {
        
    var args=new Object();   
        
    var query=location.search.substring(1);//獲取查詢串   
        var pairs=query.split("&");//在逗號處斷開   
        for(var i=0;i<pairs.length;i++)   
        
    {   
            
    var pos=pairs[i].indexOf('=');//查找name=value   
            if(pos==-1)   continue;//如果沒有找到就跳過   
            var argname=pairs[i].substring(0,pos);//提取name   
            var value=pairs[i].substring(pos+1);//提取value   
            args[argname]=unescape(value);//存為屬性   
        }

        
    return args;
    }
                

    /*
    行雙擊方法,用戶選擇行數據。
    通過回調函數,完成賦值,最后關閉窗口
    rtnval: string 行數據
    */

    function Dialog_onDblClick(rtnval)
    {
        
    //var rtnval = {prodId: prodId, prodName: prodName};
         
        
    var args = new Object();
        args 
    = GetUrlParms();
        
    var cmp = args['cmp']
        
        window.opener.openCallback(cmp, rtnval); 
        window.close();
    }


    主頁面 域id通過json字符串跟url傳遞后彈出頁面
    function popProductDialog(){
        var endtarget = "<%=path%>/bas/product.do?method=dialog";
        var cmp = "{a: 'prodId', b: 'prodName'}";
           //fshowModalDialog(endtarget, cmp);
          
           fopenWindow(endtarget+ "&cmp=" + cmp);
          
       }

    彈出框
    function Document_onDblClick(value1,value2)
                
    {
                    
    var rtnval = {clientId:value1, clientName:value2};    
                        Dialog_onDblClick(rtnval);

                }
    彈出頁面解析獲得域id,并通過循環域id從返回值中獲取數據,并進行賦值。

    這里唯一需要變的就是,彈出頁面的返回值,可能因為需求的增加,需要返回更多的數據,或者就一次性將所有數據都作為json數據返回。

    這樣客戶在調用的時候,只要域id不超出返回字段的范圍,就可以正確使用了。

    posted on 2009-08-31 10:39 風人園 閱讀(582) 評論(0)  編輯  收藏 所屬分類: ECP

    主站蜘蛛池模板: 日本高清高色视频免费| 免费一级毛片在线播放视频免费观看永久| 97视频热人人精品免费| 亚洲国产精品一区| 久久国产乱子伦精品免费不卡| 亚洲精品无码久久久久| 伊人久久大香线蕉免费视频| 亚洲一区二区三区香蕉| 成人爽a毛片免费| 亚洲国产高清人在线| 98精品全国免费观看视频| 永久免费视频v片www| 亚洲gay片在线gv网站| 四虎在线播放免费永久视频 | 国外成人免费高清激情视频| 亚洲国产欧洲综合997久久| 免费a级毛片视频| 久久国产免费直播| 大学生高清一级毛片免费| mm1313亚洲国产精品无码试看 | 日本亚洲欧洲免费天堂午夜看片女人员 | 一个人免费视频在线观看www| 亚洲丁香色婷婷综合欲色啪| 美女视频黄a视频全免费网站一区| 84pao国产成视频免费播放| 国产亚洲av片在线观看18女人| 国产在线观看免费av站| 亚洲狠狠ady亚洲精品大秀| 成人免费a级毛片无码网站入口| 亚洲成av人在线观看网站| 亚洲男人av香蕉爽爽爽爽| 免费国产成人18在线观看| 亚洲性猛交xx乱| 免费人成年轻人电影| 永久在线观看免费视频| 色偷偷亚洲女人天堂观看欧| 亚洲国产一区明星换脸| 1000部啪啪毛片免费看| 久久精品7亚洲午夜a| 一本久久免费视频| 337p欧洲亚洲大胆艺术|