高分求:弹出页面并把值返回给父页面

fastrain 2010-06-17 11:54:56
父页面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。

...全文
460 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyqingtian 2010-06-17
  • 打赏
  • 举报
回复
弹出层不是更方便吗?
wuyq11 2010-06-17
  • 打赏
  • 举报
回复
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);
}
S_trance 2010-06-17
  • 打赏
  • 举报
回复
1当点击按钮的时候,探出模式窗口,通过js,或者jquery,当关闭的时候父页面可用,
2那就查询所有吧,然后绑定,
3这个可以,得到第一列和第二列的数据然后拼一下
回答简陋,但肯定能做到
glgxw 2010-06-17
  • 打赏
  • 举报
回复
通过js,jquery
lishuai1030 2010-06-17
  • 打赏
  • 举报
回复
表名和字段名参数化
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为弹出页面的需要传回的数据
leonwan 2010-06-17
  • 打赏
  • 举报
回复
jquery
永生天地 2010-06-17
  • 打赏
  • 举报
回复
通过js框架实现,如jquery
loveu0508 2010-06-17
  • 打赏
  • 举报
回复
Ajax可以实现你的需求
fastrain 2010-06-17
  • 打赏
  • 举报
回复
顶起来,别沉下去
巍巍星火 2010-06-17
  • 打赏
  • 举报
回复
用JQUERY弹出层不是更好吗....
  • 打赏
  • 举报
回复
方法很多、 都可以参考
zhxingway 2010-06-17
  • 打赏
  • 举报
回复
哦,我知道了,原来第一步打开小窗口的时候,已经把Text1传过去了呀.

window.showModalDialog("Sub.aspx?tabname=" + dtext, document.getElementById('Text1'),"dialogWidth=500px;dialogHeight=400px");
jauntyhand 2010-06-17
  • 打赏
  • 举报
回复
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);
}
fastrain 2010-06-17
  • 打赏
  • 举报
回复
谢谢大家的热情帮助,继续哦
koukoujiayi 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zhxingway 的回复:]
4.应该还有第四步吧,怎样把窗口回传过来的值显示在主页面上?????
[/Quote]
在Sub.aspx中的TextBox中输入数据,按Button,关闭Sub.aspx页面,
就会在Page.aspx的Text1上显示!!
zhxingway 2010-06-17
  • 打赏
  • 举报
回复
看了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();
}


4.应该还有第四步吧,怎样把窗口回传过来的值显示在主页面上?????
理不完的逻辑 2010-06-17
  • 打赏
  • 举报
回复
友情帮顶!
caiyang910423 2010-06-17
  • 打赏
  • 举报
回复
你可以使用JS 把Sub.aspx页面以模式窗体的等式打开,当关闭Sub.aspx页面的时候你再写一个JS 返回一个值。

把GridView选择行的第一列和第二列的值连接成一个字符串
这个可以在后台写一个方法,返回String类型,访问修饰符为protected就可以了,你在页面就可以直接调用取值了,。


你试试
koukoujiayi 2010-06-17
  • 打赏
  • 举报
回复
1.在Button加OnClientClick事件来打开页面,再加一个input来实验返回数据,如下:
    <asp:Button runat="server" ID="btnSel" Text="搜索" OnClientClick="return openwin()" />
<input id="Text1" type="text" />

打开页面的js:
        function openwin() {
var ddl = document.getElementById("ddlJDLX");
var dtext = ddl.options[ddl.selectedIndex].text;
window.showModalDialog("Sub.aspx?tabname=" + dtext, document.getElementById('Text1'),"dialogWidth=500px;dialogHeight=400px");
return false;
}


2.Sub.aspx页面获得传过来的值,在Sub.aspx的Page_Load事件中:
Response.Write(Request.QueryString["tabname"].ToString());

3.在Sub.aspx中加一个TextBox和Html的Button,用于关闭,试验回传数值个Page.aspx,代码如下:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Button2" type="button" value="button" onclick="returnParentWindow()" />

关闭页面及传递数值的js:
            function returnParentWindow() {
window.dialogArguments.value = document.getElementById("TextBox1").value;
window.close();
}

楼主先实验以上的三点,理解后在编你的GridView等的代码!



骑猪看海 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 fastrain 的回复:]
除了JQuery,Ajax还有其它相对简单的办法没,比如说简单的JS+后台代码就可以实现呢
[/Quote]
可以

function aa(){
var url="Sub.aspx?table="document.getElementById("ddlJDLX").value;
var result=window.showModalDialog(Url,'tempdialog','dialogHeight:650px;dialogWidth:600px;status:no;');
}

Page.aspx 页 按扭加上
onclick="aa();"
SUB页后台
/// <summary>
/// Ajax启动脚本 For 引用AJAX组件的页
/// JS语句
/// </summary>
/// <param name="page">一般是this</param>
/// <param name="js">如alert('test');</param>
public void AjaxRunJs(string js)
{
ClientScript.RegisterStartupScript(this.GetType(), "ajaxjs", string.Format("{0}", js), true);
}
///GridView行绑定事件里加上

AjaxRunJs(string.Format("window.returnValue='{0}$$$';window.close();"
, 你要取的每一个值,你要取的第二个值));
加载更多回复(1)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧