<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 風人園 閱讀(574) 評論(0)  編輯  收藏 所屬分類: ECP

    主站蜘蛛池模板: 免费国产午夜高清在线视频| 国产日本一线在线观看免费| 亚洲综合一区国产精品| 亚洲天堂福利视频| 亚洲精品二三区伊人久久| 亚洲AV无码一区二区三区电影| 东方aⅴ免费观看久久av| 在线播放免费人成视频在线观看| 亚洲成色WWW久久网站| 中文字幕在线观看亚洲| 亚洲av午夜福利精品一区| 日韩欧美一区二区三区免费观看| 99在线免费观看视频| 日韩电影免费在线观看中文字幕| 亚洲国产精品无码久久九九大片| 国产成人精品日本亚洲专一区| 亚洲第一页中文字幕| 亚洲综合色区中文字幕| 黄色网站软件app在线观看免费| 99久久久国产精品免费牛牛四川| 四虎影视永久免费观看网址| 亚洲首页在线观看| 免费精品视频在线| 亚洲狠狠色丁香婷婷综合| 国产91成人精品亚洲精品| 好久久免费视频高清| 日韩免费人妻AV无码专区蜜桃| 久久99久久成人免费播放| 国产亚洲精品AAAA片APP| 亚洲av成人片在线观看| 久久国产亚洲精品麻豆| 亚洲一卡2卡3卡4卡乱码 在线| 亚洲国产精品成人精品软件 | 亚洲AV无码一区二区大桥未久 | 成人A毛片免费观看网站| 国产亚洲一区区二区在线| 免费精品99久久国产综合精品| 成年女人毛片免费视频| 亚洲一卡二卡三卡四卡无卡麻豆 | 国产精品无码亚洲精品2021| 无码一区二区三区免费|