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>" + "\n");
s.Append("window.returnValue='" + this.GetSelectValue() + "';" + "\n");
s.Append("window.close();"+"\n");
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 后台用法(兼容谷歌浏览器)
- StringBuilder s = new StringBuilder();
- s.Append("<script language=javascript>");
- s.Append("var a=window.showModalDialog('selectnh.aspx?zhen=" + this.sxdw1.zj + "&cun=" + this.sxdw1.cj + "&zu=" + this.sxdw1.zu + "');");
- s.Append(@"//for chrome
- if(typeof(a) == 'undefined') {
- a = window.returnValue;
- }");
- s.Append("document.getElementById('txtcbfdb').value=a[0];");
- s.Append("document.getElementById('hdnhid').value=a[1];");
- s.Append("</script>");
- Type cstype = this.GetType();
- ClientScriptManager cs =this.ClientScript;
- string sname = "lt";
- if (!cs.IsStartupScriptRegistered(cstype, sname))
- cs.RegisterStartupScript(cstype, sname, s.ToString());
父页面
按钮事件代码
- StringBuilder s = new StringBuilder();
- s.Append("<script language=javascript>" + "\n");
- s.Append("var result=new Array; ");
- s.Append("result[0]="+this.ddlnh.SelectedItem.Text+";");
- s.Append("result[1]="+this.ddlnh.SelectedValue+";");
- s.Append(@"//for chrome
- if(window.opener != undefined) {window.opener.returnValue = result;window.opener.close();} else{");
- s.Append("window.returnValue=result;}" + "\n");
- s.Append("window.close();" + "\n");
- s.Append("</script>");
- Type cstype = this.GetType();
- ClientScriptManager cs = this.ClientScript;
- string csname = "ltype";
- if (!cs.IsStartupScriptRegistered(cstype, csname))
- cs.RegisterStartupScript(cstype, csname, s.ToString());
子页面 按钮事件代码
下面的传多个值的时候记得加‘’号
- StringBuilder s = new StringBuilder();
- s.Append("<script language=javascript>" + "\n");
- s.Append("var result=new Array(10); ");
- if (!string.IsNullOrEmpty(model.YWCBHT))
- {
- s.Append("result[0]=" + model.CBHTBM.Trim() + ";");//合同编码
- }
- else
- {
- s.Append("result[0]=" + model.JYQZBM.Trim() + ";");//经营权证编码
- }
- NEWLAND.BLL.T_dictionary zdbll = new NEWLAND.BLL.T_dictionary();
- s.Append("result[1]='" + zdbll.Getzd("承包经营权取得方式", model.CBFS).Trim() + "';");//承包方式
- string qzsj = model.CBKSRQ + "至" + model.CBJSRQ;
- s.Append("result[2]='" + qzsj + "';");
- s.Append("result[3]='" + model.CBFMC.Trim() + "';");
- s.Append("result[4]=" + model.LXDH.Trim() + ";");
- s.Append("result[5]='" + zdbll.Getzd("证件类型", model.CBFZJLX).Trim() + "';");
- s.Append("result[6]='" + model.CBFZJHM.Trim() + "';");
- s.Append("result[7]='" + model.CBFDZ.Trim() + "';");
- s.Append("result[8]='" + model.YZBM.Trim() + "';");
- NEWLAND.BLL.DK dkbll = new NEWLAND.BLL.DK();
- DataTable dkbt = dkbll.GetList("cbfdbid='"+this.ddlnh.SelectedValue+"'").Tables[0];
- if (dkbt.Rows.Count > 0)
- {
- string strs = "共"+dkbt.Rows.Count+"块";
- decimal htmj = 0;
- for (int t = 0; t < dkbt.Rows.Count; t++)
- {
- try
- {
- htmj += decimal.Parse(dkbt.Rows[t]["htmj"].ToString());
- }
- catch { }
- }
- strs +=htmj+ "亩";
- s.Append("result[9]='" + strs + "';");
- }
- else
- {
- string strs = "共0块0亩";
- s.Append("result[9]='" + strs + "';");
- }
- s.Append(@"//for chrome
- if(window.opener != undefined) {window.opener.returnValue = result;window.opener.close();} else{");
- s.Append("window.returnValue=result;}" + "\n");
- s.Append("window.close();" + "\n");
- s.Append("</script>");
- Type cstype = this.GetType();
- ClientScriptManager cs = this.ClientScript;
- string csname = "ltype";
- if (!cs.IsStartupScriptRegistered(cstype, csname))
- cs.RegisterStartupScript(cstype, csname, s.ToString());
子页面一定记得在head中加入 <base target="_self" />
Asp.net中,从弹出窗体取选择值(转)的更多相关文章
- ckfinder在IE10,IE9中的弹出框不能选择,或者不能上传解决方法
在IE9,或IE10中ckfinder在IE10,IE9中的弹出框不能选择,或者不能上传解决方法 把弹出框嵌入到jquery dialog中.可以解决 I did: // javascript f ...
- abap中的弹出窗体函数
POPUP_TO_CONFIRM_WITH_MESSAGE 会话框确实处理步骤; 用识别正文POPUP_TO_SELECT_MONTH 日历:弹出 POPUP_TO_C ...
- [King.yue]Ext.JS 弹出窗体取值赋值
//从Grid取值 var name = Ext.getCmp(gridGridID).getView().getSelectionModel().getSelection()[0].data.Nam ...
- 【转】asp.net中设置弹出谈话框的几种方式详解
源地址:https://blog.csdn.net/zou15093087438/article/details/79637114 注:可用winform的MessageBox的方法,只需引用Syst ...
- EBS OAF开发中实现參数式弹出窗体
EBS OAF开发中实现參数式弹出窗体 (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 概览 參数式弹出窗体和嵌入式弹出窗体不一样,它拥有独立 ...
- 线程中使用SaveFileDialog不能弹出窗体
在子线程中使用 SaveFileDialog 无法弹出窗体,主要是我们需要用主线程去处理SaveFileDialog , 我们可以将子线程进行如下设置: public partial class Fo ...
- Bootstrap datepicker 在弹出窗体modal中不工作
解决办法 在 show 方法后面 添加 下面一段代码 $('#modalCard').modal('show');—例子 打开 弹出窗体 //$('#modalCard').modal('hide') ...
- MVVM模式下弹出窗体
原地址:http://www.cnblogs.com/yk250/p/5773425.html 在mvvm模式下弹出窗体,有使用接口模式传入参数new一个对象的,还有的是继承于一个window,然后在 ...
- Asp.net点击按钮弹出文件夹选择框的实现(网页)
本文地址:http://www.cnblogs.com/PiaoMiaoGongZi/p/4092112.html 在Asp.net网站实际的开发中,比如:需要实现点击一个类似于FileUpload的 ...
随机推荐
- undefined variable _session php
解决方法: if (version_compare(PHP_VERSION, '5.4.0', '<')) { if(session_id() == '') {session_start();} ...
- 如何解决苹果Mac系统无法识别U盘
1.在Mac机上打开“磁盘工具”,将U盘重新分区, 2.格式选“exFAT”.该格式分区Win及Mac系统中都可以读和写,特别是可以支持大于4GB的大文件.但是一些高清播放机可能不支持. 3.以 ...
- 【LeetCode】332. Reconstruct Itinerary
题目: Given a list of airline tickets represented by pairs of departure and arrival airports [from, to ...
- 【Android Developers Training】 36. 设置文件共享
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- 如何连接远程redis,并且选择某个库进行操作
public static Jedis getJedis(){ Jedis jedis = new Jedis("222.201.145.215"); jedis.select(1 ...
- python迭代器生成器(二)
其他内置类型迭代器 除了文件以及列表这样的实际的序列外,其他类型也有适合的迭代器. 遍历字典的经典方法是明确的获取其键的列表. 在最近的python版本中,字典有一个迭代器,在迭代环境中,会自动一次返 ...
- SSIM(结构相似度算法)不同实现版本的差异
前言 最近用ssim测试图片画质损伤时,发现matlab自带ssim与之前一直使用的ssim计算得分有差异,故和同事开始确定差异所在. 不同的SSIM版本 这里提到不同的ssim版本主要基于matla ...
- Perl根据日期分割数据文件
Perl的优势:比C好写,比Shell高效,Linux普遍支持. #!/usr/bin/perl -w # auth: lichmama@cnblogs.com # what: split data_ ...
- Java--回调接口
回调接口: 我们都知道,一个线程在运行中,遇到一个耗时操作(方法)时,会开启另外一个线程,即所谓 -- 异步 .java中 回调接口 也必然应用与异步加载. 所谓 回调接口 ,也就是线程运行中 遇到一 ...
- java字符串,包,数组及空心正方形,菱形的实例
一.数组:相同类型的多个对像引用类型:所有的类,接口,数组,int[] ints(变量名) = new int[3]new:指的是在内存空间重新开辟一块区域 String s1 = "abc ...