高分求:弹出页面并把值返回给父页面
父页面Page.aspx有一个<asp:DropDownList runat="server" ID="ddlJDLX" >,一个<asp:TextBox runat="server" ID="txtJDMC">,一个<asp:Button runat="server" ID="btnSel" Text="搜索" />。
当ddlJDLX选定后,点击btnSel弹出一个子页面Sub.aspx,把ddlJDLX的值传给Sub.aspx,它的值是一个数据库的表名tabname。
在显示该页面的时候,page.aspx页面的背景色是灰色,且无法相应用户的任何操作,只有把Sub.aspx关闭,page.aspx才恢复成可编辑状态。
Sub.aspx里根据传过来的表名tabname,从库里查出该表下的所有数据并显示在GridView里,对GridView里某行,双击的时候,把它的第一列和第二列的值连接成一个字符串,传回给Page.aspx的txtJDMC,并关闭Sub.aspx页面,page.aspx恢复成可编辑状态。
问题:
1。什么办法弹出这个页面,并达到我的要求。
2。tabname是动态变化的,查询的sql语句如何编写,表名是变的。
3。如何把GridView选择行的第一列和第二列的值连接成一个字符串,并返回给page.aspx的txtJDMC。
[解决办法]
Ajax可以实现你的需求
[解决办法]
通过js框架实现,如jquery
[解决办法]
jquery
[解决办法]
表名和字段名参数化
function Fun()
{
var d=document.getElementById("div1");
var arr=new Array("AA","BB");
var dg=window.showModalDialog("c.html",arr,"dialogWidth:300px;dialogHeight:300px;");
if(dg!=null)
{
for(i=0;i<dg.length;i++)
{
d.innerText+=dg[i]+" ";
}
}
}
按钮点击页面,点击弹出c.html
function Fun()
{
var a=document.getElementById("txt1");
var b=document.getElementById("txt2");
var arr=new Array(a.value,b.value);
window.returnValue=arr;
window.close();
}
var r=window.dialogArguments;
var d=document.getElementById("div1");
for(m=0;m<r.length;m++)
{
d.innerText+=r[m]+" ";
}
</script>
txt1,txt2为弹出页面的需要传回的数据
[解决办法]
通过js,jquery
[解决办法]
1当点击按钮的时候,探出模式窗口,通过js,或者jquery,当关闭的时候父页面可用,
2那就查询所有吧,然后绑定,
3这个可以,得到第一列和第二列的数据然后拼一下
回答简陋,但肯定能做到
[解决办法]
jwindow弹出页面
<SCRIPT src=".js/ui.mouse.js" type=text/javascript></SCRIPT>
<SCRIPT src="js/ui.draggable.js" type=text/javascript></SCRIPT>
<SCRIPT src="js/jquery.jwindow.js" type=text/javascript></SCRIPT>
<script>
function OpenWindow(id,width,height)
{
var p = document.getElementById("<%=hf_Id.ClientID %>").value;
var url = "a.aspx?Id="+id+"&pId="+p;
OpenJWindow('#openwin', url, width,height, EditClosed);
}
function SetTitle(url)
{
var obj = document.getElementById("winTitle");
if(url.lastIndexOf("Id") >0){
obj.innerHTML ="编辑";
return;
}
obj.innerHTML ="新增";
}
function EditClosed(result) {
if (result == "0") return;
document.getElementById("<%=LinkButton1.ClientID %>").click();
return false;
}
OpenWindow('', 750,340);
子页面
function CloseClientJWindow(result, isInIFrame)
{
var p = null;
if(isInIFrame)
{
p = self.parent;
if(p == null) return;
}
else
{
p = self;
}
p.jWindow.close(p.$('#openwin'),result);
}
[解决办法]
弹出层不是更方便吗?
------解决方案--------------------
<asp:Button runat="server" ID="btnSel" Text="搜索" OnClientClick="return openwin()" /> <input id="Text1" type="text" />
[解决办法]
你可以使用JS 把Sub.aspx页面以模式窗体的等式打开,当关闭Sub.aspx页面的时候你再写一个JS 返回一个值。
把GridView选择行的第一列和第二列的值连接成一个字符串
这个可以在后台写一个方法,返回String类型,访问修饰符为protected就可以了,你在页面就可以直接调用取值了,。
你试试
[解决办法]
看了11楼的回复,有个小问题,希望大家帮忙解答,我先收藏了.
1.在Button加OnClientClick事件来打开页面,Url传值给Sub.aspx页面.
2.Sub.aspx页面获得传过来的值,在Sub.aspx的Page_Load事件中:
3.在Sub.aspx中加一个TextBox和Html的Button,用于关闭,试验回传数值个Page.aspx,代码如下:
function returnParentWindow() { window.dialogArguments.value = document.getElementById("TextBox1").value; window.close();}
[解决办法]