比如我在弹出的窗口中有一个有个GridView,是放员工信息,其中有一模板列,用于选择那些人,选中后如何返回这些信息给主调用窗口?返回的是gridView的行的内容。
弹出窗口我用的是jquery模态窗口插件
效果:A页面有个TextBox,一个Button,点击Button弹出一个(模态)窗口,窗口是调用B页面(B页面一个TextBox,一个Button按钮,输入条件查询到数据库相应的数据,读取到Gridview中),点击Gridview的一行获取该行的一列值,该值显示到A页面上的TextBox中,同时窗口也关闭
在弹出窗口面面你能取到值对吧?
给父页面赋值,主要是通过window.opener来实现。
下面是一个例子:参数是调用时传入的:
var parentWindow; //父窗口
//不同的来源, 取值方法不同
if(window.opener)
parentWindow = window.opener;
else if(window.openerWindow)
parentWindow=window.openerWindow; //由外部程序传入的参数
else{
alert("提示:父窗口参数错误");
return;
}
//取opener域指针
var nameValueField = parentWindow.document.getElementById(window.NameValueField);
var nameField = parentWindow.document.getElementById(window.NameField);
var valueField = parentWindow.document.getElementById(window.ValueField);
var callBackFn = window.callBackFn;
//设置域值
if(nameValueField)
{
nameValueField.value = retSelectedNameValue;
}
if(nameField)
{
nameField.value = retSelectedName;
}
if(valueField){
valueField.value = retSelectedValue;
}
if(callBackFn)
{
eval("parentWindow."+callBackFn)(retSelectedName,retSelectedValue,retSelectedNameValue);
}
//关闭选择窗口,不同的来源, 方法不同
if(window.opener)
this.close();
else if(window.parentWindow)
window.parentWindow.close();
else{
alert("提示:未传入父窗口参数,请手动关闭。");
return;
}
在大家的帮下已经解决了谢谢大家!
用Jquery ajax试试呗
用一个EventHander做
可以查看jQuery插件的代码,在关闭窗口的时候,可以返回点击值给A页面
给点参考代码你
父页面JS代码(Button onclick事件示例:javascript:OpenOvertimeDlog('company');return false; 如果需要刷新父页面,请把return false 去掉 )
function OpenOvertimeDlog(frmWin) { var me; var de var mm = new Array(); // action = frmWin; // 把父页面窗口对象当作参数传递到对话框中,以便对话框操纵父页自动刷新。 switch (frmWin) { case "company": me = "WebData/DataCompany.aspx?company=" + escape(document.getElementById("txtcompany").value) + ""; ; break; case "npp": me = "WebData/DataNPPForm.aspx?company=" + document.getElementById("txtcompany").value + "&npp=" + escape(document.getElementById("txtnpp").value) + "&rev=" + escape(document.getElementById("txtversion").value) + ""; ; break; } // 显示对话框。 mm = window.showModalDialog(me, null, 'help:no;status:no;dialogWidth=760px;dialogHeight=560px')
if (mm != null) { switch (frmWin) { case "company": window.document.getElementById("txtcompany").value = mm.CompanyCode; break; case "npp": window.document.getElementById("txtcompany").value = mm.CompanyCode; window.document.getElementById("txtnpp").value = mm.NPPNO; window.document.getElementById("txtversion").value = mm.Version; $("#uploadify")[0].style.display = 'none'
$.ajax({ type: "POST", url: "JSProcess.ashx", data: { companycode: $("#txtcompany").val(), nppno: $("#txtnpp").val(), version: $("#txtversion").val(), filename: "" }, success: function (data) { $("#msg").html(""); $('<a id="htl" href="' + getRootPath() + '/upload/' + decodeURI(data) + '">' + decodeURI(data) + '</a>').replaceAll("#htl"); } } }); break; } }
子页面JS代码
// row_data数组
row_data = row_data.data; window.returnValue = row_data; window.close();
//如果是Grid,可以在Grid中双击事件(其它的也可)添加上述的代码即可
opener.document.getElementById('主頁面的控件ID值').value =子頁面點擊的Grid行的值;
主頁面可以增加個hidden控件接收,然後在主頁面取值就可以的哦