zoukankan      html  css  js  c++  java
  • Asp.net中,从弹出窗体取选择值(转)

    在Asp.net中,从A页面中弹出B页面,在B页面中选择数据后,关闭并将数据更新到A页面,是一种常用 的方式。只是我对Javascript不熟悉,所以捣鼓了一下午,终于有了一点成绩:
    测试项目有两个页面:Default.aspx及Default2.aspx,在Default.aspx页面上有一个TextBox1及一个Button1,Button1用于触发Default2.aspx,TextBox1用于接收从子页面传回的值。
    Button1的代码如下:

    StringBuilder s = new StringBuilder();
    s.Append("<script language=javascript>");
    s.Append("var a=window.showModalDialog('Default2.aspx');");
    s.Append("if(a!=null)");
    s.Append("document.all('TextBox1').value=a;");
    s.Append("</script>");
    Type cstype = this.GetType();
    ClientScriptManager cs = Page.ClientScript;
    string sname = "lt";
    if (!cs.IsStartupScriptRegistered(cstype, sname))
    cs.RegisterStartupScript(cstype, sname, s.ToString());

    Default2.aspx页面内有一个CheckBoxList1及一个Button1,Button1执行返回选择的CheckBoxList1的值,并将当前页面关闭。
    代码如下:

    protected void Button1_Click(object sender, EventArgs e)
    {
    StringBuilder s = new StringBuilder();
    s.Append("<script language=javascript>" + " ");
    s.Append("window.returnValue='" + this.GetSelectValue() + "';" + " ");
    s.Append("window.close();"+" ");
    s.Append("</script>");
    Type cstype = this.GetType();
    ClientScriptManager cs = Page.ClientScript;
    string csname = "ltype";
    if (!cs.IsStartupScriptRegistered(cstype, csname))
    cs.RegisterStartupScript(cstype, csname, s.ToString());
    }
    private string GetSelectValue()
    {
    string rvalue = "";
    for (int i = 0; i < this.CheckBoxList1.Items.Count; i++)
    {
    if (this.CheckBoxList1.Items[i].Selected)
    {
    if (rvalue == "")
    rvalue += this.CheckBoxList1.Items[i].Text;
    else
    rvalue += "," + this.CheckBoxList1.Items[i].Text;
    }
    }
    return rvalue;
    }

    此时执行程序,在Default2.aspx中不会关闭且不能传回值,很重要的一点:
    在head中,加入这一行:



    <base target="_self" />

    asp.net window.showModalDialog 后台用法(兼容谷歌浏览器)

    1.  StringBuilder s = new StringBuilder();  
    2.             s.Append("<script language=javascript>");  
    3.             s.Append("var a=window.showModalDialog('selectnh.aspx?zhen=" + this.sxdw1.zj + "&cun=" + this.sxdw1.cj + "&zu=" + this.sxdw1.zu + "');");  
    4.             s.Append(@"//for chrome   
    5. if(typeof(a) == 'undefined') {   
    6. a = window.returnValue;   
    7. }");  
    8.             s.Append("document.getElementById('txtcbfdb').value=a[0];");  
    9.             s.Append("document.getElementById('hdnhid').value=a[1];");  
    10.             s.Append("</script>");  
    11.             Type cstype = this.GetType();  
    12.             ClientScriptManager cs =this.ClientScript;  
    13.             string sname = "lt";  
    14.             if (!cs.IsStartupScriptRegistered(cstype, sname))  
    15.                 cs.RegisterStartupScript(cstype, sname, s.ToString());   


    父页面

    按钮事件代码

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1. StringBuilder s = new StringBuilder();  
    2.             s.Append("<script language=javascript>" + " ");  
    3.             s.Append("var result=new Array;  ");  
    4.             s.Append("result[0]="+this.ddlnh.SelectedItem.Text+";");  
    5.             s.Append("result[1]="+this.ddlnh.SelectedValue+";");  
    6.             s.Append(@"//for chrome   
    7. if(window.opener != undefined) {window.opener.returnValue = result;window.opener.close();} else{");  
    8.             s.Append("window.returnValue=result;}" + " ");  
    9.              
    10.             s.Append("window.close();" + " ");  
    11.             s.Append("</script>");  
    12.             Type cstype = this.GetType();  
    13.             ClientScriptManager cs = this.ClientScript;  
    14.             string csname = "ltype";  
    15.             if (!cs.IsStartupScriptRegistered(cstype, csname))  
    16.                 cs.RegisterStartupScript(cstype, csname, s.ToString());  

    子页面 按钮事件代码

    下面的传多个值的时候记得加‘’号

    [csharp] view plaincopy在CODE上查看代码片派生到我的代码片
     
    1.  StringBuilder s = new StringBuilder();  
    2.                 s.Append("<script language=javascript>" + " ");  
    3.                 s.Append("var result=new Array(10);  ");  
    4.                 if (!string.IsNullOrEmpty(model.YWCBHT))  
    5.                 {  
    6.                     s.Append("result[0]=" + model.CBHTBM.Trim() + ";");//合同编码  
    7.                 }  
    8.                 else  
    9.                 {  
    10.                     s.Append("result[0]=" + model.JYQZBM.Trim() + ";");//经营权证编码  
    11.                 }  
    12.                 NEWLAND.BLL.T_dictionary zdbll = new NEWLAND.BLL.T_dictionary();  
    13.   
    14.                 s.Append("result[1]='" + zdbll.Getzd("承包经营权取得方式", model.CBFS).Trim() + "';");//承包方式  
    15.                 string qzsj = model.CBKSRQ + "至" + model.CBJSRQ;  
    16.                 s.Append("result[2]='" + qzsj + "';");  
    17.                 s.Append("result[3]='" + model.CBFMC.Trim() + "';");  
    18.                 s.Append("result[4]=" + model.LXDH.Trim() + ";");  
    19.                 s.Append("result[5]='" + zdbll.Getzd("证件类型", model.CBFZJLX).Trim() + "';");  
    20.                 s.Append("result[6]='" + model.CBFZJHM.Trim() + "';");  
    21.                 s.Append("result[7]='" + model.CBFDZ.Trim() + "';");  
    22.                 s.Append("result[8]='" + model.YZBM.Trim() + "';");  
    23.                 NEWLAND.BLL.DK dkbll = new NEWLAND.BLL.DK();  
    24.                 DataTable dkbt = dkbll.GetList("cbfdbid='"+this.ddlnh.SelectedValue+"'").Tables[0];  
    25.                 if (dkbt.Rows.Count > 0)  
    26.                 {  
    27.                     string strs = "共"+dkbt.Rows.Count+"块";  
    28.                     decimal htmj = 0;  
    29.                     for (int t = 0; t < dkbt.Rows.Count; t++)  
    30.                     {  
    31.                         try  
    32.                         {  
    33.                             htmj += decimal.Parse(dkbt.Rows[t]["htmj"].ToString());  
    34.                         }  
    35.                         catch { }  
    36.                     }  
    37.                     strs +=htmj+ "亩";  
    38.                     s.Append("result[9]='" + strs + "';");  
    39.                 }  
    40.                 else  
    41.                 {  
    42.                     string strs = "共0块0亩";  
    43.                     s.Append("result[9]='" + strs + "';");  
    44.                 }  
    45.   
    46.                 s.Append(@"//for chrome   
    47. if(window.opener != undefined) {window.opener.returnValue = result;window.opener.close();} else{");  
    48.                 s.Append("window.returnValue=result;}" + " ");  
    49.   
    50.                 s.Append("window.close();" + " ");  
    51.                 s.Append("</script>");  
    52.                 Type cstype = this.GetType();  
    53.                 ClientScriptManager cs = this.ClientScript;  
    54.                 string csname = "ltype";  
    55.                 if (!cs.IsStartupScriptRegistered(cstype, csname))  
    56.                     cs.RegisterStartupScript(cstype, csname, s.ToString());  



    子页面一定记得在head中加入   <base target="_self" />

  • 相关阅读:
    [CEOI2008] order
    Atcoder 2373 Cookie Exchanges
    [POI2011]ROT-Tree Rotations
    bzoj 5216: [Lydsy2017省队十连测]公路建设
    bzoj 5215: [Lydsy2017省队十连测]商店购物
    Codeforces 961 E Tufurama
    [九省联考2018] 秘密袭击coat
    Codeforces 961 D Pair Of Lines
    [八省联考2018] 劈配
    [九省联考2018]一双木棋chess
  • 原文地址:https://www.cnblogs.com/kingreatwill/p/4001475.html
Copyright © 2011-2022 走看看