var diag = new Dialog(); diag.show(); d出一个子窗体,如何在子窗体中调用父窗体的函数

var diag = new Dialog(); diag.show(); d出一个子窗体,如何在子窗体中调用父窗体的函数,第1张

用GetParent()获取父窗口指针。

设你主对话框类为CMyDialog。

CMyDialog pDlg = (CMyDialog )GetParent()->GetParent()。

pDlg->函数或变量。

第一个GetParent()获取的是tab control指针,再通过tab control获取主对话框指针。

然后就可以对对话框 *** 作在子窗体中调用父窗体中函数。

比如父窗体是form1,子窗体form2

子窗体中:

From faFrom;

public Form2(From f)

{ faForm = f;

InitializeComponent(); }

父窗体

private void button1_Click(object sender, EventArgs e)

{

Form2 f = new Form2();

fgetForm(this);

fshow();

}

之后就可以通过对faForm *** 作,从而控制父窗体。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 40 Transitional//EN">

<HTML>

<HEAD>

<TITLE>New Document </TITLE>

<META content="EditPlus" name="Generator">

<META content="" name="Author">

<META content="" name="keywords">

<META content="窗口,对话框,窗体,方法,参数" name="description">

<script language="javascript">

<!--

function openChild(){

var aa = documentgetElementById("txt9")value;

var k = windowshowModalDialog("childhtml",aa,"dialogWidth:335px;status:no;dialogHeight:300px");

if(k != null)

documentgetElementById("txt11")value = k;

}

//-->

</script>

</HEAD>

<BODY>

<FONT face="宋体"></FONT>

<br>

传递到父窗口的值:<input id="txt9" type="text" value="33333" name="txt9"><br>

返回的值:<input id="txt11" type="text" name="txt11"><br>

子窗口设置的值:<input id="txt10" type="text" name="txt10"><br>

<input id="Button1" onclick="openChild()" type="button" value="openChild" name="Button1">

</BODY>

</HTML>

childhtml

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 40 Transitional//EN">

<HTML>

<HEAD>

<TITLE>New Document </TITLE>

<META content="用GetParent()获取父窗口指针。设你主对话框类为CMyDialog。CMyDialog pDlg = (CMyDialog )GetParent()->GetParent()。pDlg->函数或变量。第一个GetPare" name="Generator">

<META content="" name="Author">

<META content="" name="Keywords">

<META content="" name="Description">

<meta >

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 401 Transitional//EN">

<html>

<head>

<title>checkbox</title>

<script src="js/jquery-132js" type="text/javascript"></script>

<script src="js/1js" type="text/javascript"></script>

</head>

<body>

<table id="table1">

<tr>

<td><input type="checkbox" value="1"/>1</td>

<td id="k_1"><input type="text" name="student" id="s_1" readonly="true"/></td>

</tr>

<tr>

<td><input type="checkbox" value="2"/>2</td>

<td id="k_2"><input type="text" name="student" id="s_2" readonly="true"/></td>

</tr>

<tr>

<td><input type="checkbox" value="3"/>3</td>

<td id="k_3"><input type="text" name="student" id="s_3" readonly="true"/></td>

</tr>

<tr>

<td><input type="checkbox" value="4"/>4</td>

<td id="k_4"><input type="text" name="student" id="s_4" readonly="true"/></td>

</tr>

</table>

</body>

</html>

-------------------------------------------------------------

$(document)ready(function() {

$("td[id^='k_']")hide();

var check = $(":checkbox"); //得到所有被选中的checkbox

var actor_config; //定义变量

checkeach(function(i){

actor_config = $(this);

actor_configclick(

function(){

if($(this)attr("checked")==true){

$("#k_"+$(this)val())show();

}else{

$("#k_"+$(this)val())hide();

}

}

);

});

});

据我分析有以下三点:

1可能是网速慢引起的,我以前也是这样的,你再重试一下看看.你要耐心的等等看.

2可能是你家电脑中了病毒引起的,因为病毒会把天书奇谈中的某些程序破坏或不让它进行或使用.最好解决办法:用杀毒软件清理一下电脑就可以了.

3你家电脑是不是”老”了,装的东西太多了,电脑承受不住就会阻止部分文件执行任务,用一道”反d墙”把它d回去,就会出现一个对话框!说:安全错误!把不用的东西(程序或文件)删掉再玩玩看吧!

$("#父窗口元素ID",windowparentdocument);

对应javascript版本为windowparentdocumentgetElementByIdx_x("父窗口元素ID");

取父窗口的元素方法:$(selector, windowparentdocument);

那么你取父窗口的父窗口的元素就可以用:$(selector, windowparentparentdocument);

类似的,取其它窗口的方法大同小异

$(selector, windowtopdocument);

$(selector, windowopenerdocument);

$(selector, windowtopframes[0]document);

CLASS:

$(windowparentdocument)find("className")text("123");

EX:

$(windowparentdocument)find("zzfw-box ul li[class='zzfw-insurance out']")text("123");

--------------------------------------------------------------------------------------------------

子窗口创建及父窗口与子窗口之间通信:

1、Javascriptd出子窗口

可以通过多种方式实现,下面介绍几种方法

(1) 通过window对象的open()方法,open()方法将会产生一个新的window窗口对象

其用法为:

windowopen(URL,windowName,parameters);

URL: 描述要打开的窗口的URL地址,如何为空则不打开任何网页;

windowName:描述被打开的窗口的民称,可以使用'_top'、'_blank'等内建名称,这里的名称跟<a href="" target="">里的target属性是一样的。

parameters:描述被打开的窗口的参数值,或者说是样貌,其包括窗口的各个属性值,及要传入的参数值。

例如:

打开一个 400 x 100 的干净的窗口:

open('','_blank','width=400,height=100,menubar=no,toolbar=no,

location=no,directories=no,status=no,scrollbars=yes,resizable=yes')

也可以这样写: var newWindow = open('','_blank');

参数说明如下:

top=# 窗口顶部离开屏幕顶部的像素数

left=# 窗口左端离开屏幕左端的像素数

width=# 窗口的宽度

height=# 窗口的高度

menubar= 窗口有没有菜单,取值yes或no

toolbar= 窗口有没有工具条,取值yes或no

location= 窗口有没有地址栏,取值yes或no

directories= 窗口有没有连接区,取值yes或no

scrollbars= 窗口有没有滚动条,取值yes或no

status= 窗口有没有状态栏,取值yes或no

resizable= 窗口给不给调整大小,取值yes或no

(2) 在javascript中除了通过open()方法建立window对象实现d出窗口外,还可以通过建立对话框的方式d出窗口。

如:

alert(""); //d出信息提示对话框

confirm(""); //d出信息确认对话框

prompt(""); //具有交互性质的对话框

但是,上述实现的d出窗口具有的功能较为单一,只能完成较为简单的功能。对于需要在对话框中显示多个数据信息,

甚至是HTML控件就无能为力了。

(3) 使用模态对话框实现复杂的对话框需求

在javascript的内建方法中还有一类方法可以实现通过对话框显示HTML内容,

也就是说可以通过创建对话框的方式来完成创建窗口对象所能完成的功能。

包括创建模态对话框和非模态对话框两种。

实现方法为:

//创建模态你对话框

windowshowModalDialog(sURL,vArguments,sFeatures)

//创建非模态对话框

windowshowModelessDialog(sURL,vArguments,sFeatures)

其区别在于:

用showModelessDialog()打开窗口时,不必用windowclose()去关闭它,当以非模态方式[IE5]打开时,打开对话框

的窗口仍可以进行其他的 *** 作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。 showModeDialog()则不然。

参数说明:

sURL:必选参数,类型:字符串。

用来指定对话框要显示的文档的URL。

vArguments:可选参数,类型:变体。

用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过windowdialogArguments来取得传递进来的参数。

sFeatures:选参数,类型:字符串。

用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。

dialogHeight:对话框高度

不小于100px,IE4中dialogHeight和dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。

dialogWidth: 对话框宽度。

dialogLeft: 距离桌面左的距离。

dialogTop: 离桌面上的距离。

center: 窗口是否居中

默认yes,但仍可以指定高度和宽度,取值范围{yes | no | 1 | 0 }。

help: 是否显示帮助按钮

默认yes,取值范围 {yes | no | 1 | 0 }。

resizable: 是否可被改变大小。

默认no,取值范围 {yes | no | 1 | 0 } [IE5+]。

status: 是否显示状态栏。

默认为yes[ Modeless]或no[Modal],

取值范围{yes | no | 1 | 0 } [IE5+]。

scroll:指明对话框是否显示滚动条。

默认为yes,取值范围{ yes | no | 1 | 0 | on | off }。

还有几个属性是用在HTA中的,在一般的网页中一般不使用。

dialogHide:在打印或者打印预览时对话框是否隐藏。

默认为no,取值范围{ yes | no | 1 | 0 | on | off }。

edge:指明对话框的边框样式。

默认为raised,取值范围{ sunken | raised }。

unadorned:默认为no,取值范围{ yes | no | 1 | 0 | on | off }。

传入参数:

要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象

例如:

var newWin=windowshowModalDialog(url,window,'dialogHeight:500px, dialogLeft:100px, dialogTop:100px,

dialogWidth:300px, status:0, edge:sunken');

newWinopen();

与使用windowopen()方法创建窗口相比,模态方法创建窗口的区别在于有模态方法创建的窗口后将不能 *** 作父窗口

2、子窗口与父窗口间通信

(1) 使用windowopen()创建的窗口与父窗口通信

可以在子窗口页面中通过windowopener来获取父窗口对象,获取之后子窗口便可以对父窗口执行刷新,传值等 *** 作。

如:

windowopenerlocationreload(); //子窗口刷新父窗口

windowopenerlocationhref //获取父窗口href

windowopenerlocaitonpathname //获取父窗口路径名

//刷新父页面

windowlocationhref=windowlocationhref ; //重新定位父页面

windowlocationreload;

(2) 模态窗口与父窗口通信

通过使用showModelDialog(),及showModelessDialog()方法创建的子窗口想与父窗口通信时,不能通过windowopener

来获取父窗口对象。要实现通信,必须在创建模态子窗口时向子窗口传入父窗口对象。

实现方式为:

在父窗口中:

var newWin=windowshowModelDialog(url,window,'');

newWinopen();

此时参数window即是父窗口对象

在子窗口中:

需首先获取父窗口对象,然后才能使用父窗口对象。由于父窗口对象是在创建

子窗口时通过传入参数的方式传入的,因此,在子窗口中也只能通过获取窗口参数的方式获取父窗口对象。获取方式如下

var parent=widnowdialogArguments;

变量parent便是父窗口对象。

例如:

//通过子窗口提交父窗口中的表单:form1,提交后执行查询 *** 作

var parent=windowdialogArguments;

parentdocumentform1action="QueryInforjsp";

parentsubmit();

//刷新父页面

var parent=windowdialogArguments;

parentlocationreload();

//从子窗口传值到父窗口

要实现在模态子窗口中传值到父窗口,需要使用windowreturnValue完成

实现方法如下:

在子窗口中:

//获取父窗口某字段值,对该值加一后返回父窗口

var parent=windowdialogArguments;

var x=parentdocuementgetElementById("age")value;

x=x+1;

//传回x值

windowreturnValue=x;

在父窗口中:

//获取来自子窗口的值

var newWin=windowshowModelDialog(url,window,'');

if(newWin!=null)

documentgetElementByIdx_x("age")value=newWin;

//在子窗口中设置父窗口的值

在子窗口中向父窗口中传入值似乎没有直接设置父窗口中的值来得明了。直接设置父窗口中元素的值显得要更灵活一些,不过具体使用哪种方法要根据实际情况和已有的实现方式而定,因为如果使用了不切实际的方法不仅降低开发效率,也降低了执行效率,往往也会造成不优雅的实现方式和代码风格。

子窗口设置父窗口的值使用方法如下:

子窗口中:

var parent=windowdialogArguments;

var x=parentdocumentgetElementByIdx_x("age")value;

x=x+1;

//设置父窗口中age属性值

parentdocumentgetElementByIdx_x("age")value=x;

以上是我在项目中使用javascript解决子窗口问题时,收集及积累的一些方法和资料。我是使用建立模态窗口的方式来实现的(这主要与项目本身有关),不过其实不论是使用windowopen()还是使用windowshowModelDialog()进行传参等 *** 作时虽然在实现方法上有很大的差别,初次接触会觉得有点乱,但只要理清子窗口与父窗口之间的关系和角色之后,就很好理解了。

①jquery在父页面 获取iframe子页面的元素

代码如下:(objid为子页面的id)

$("#objid",documentframes('iframename')document)

②js 在父页面获取iframe子页面元素代码如下:

windowframes["iframe_ID"]documentgetElementByIdx_x("元素id");

以上两种都能获取到子页面中的元素,再根据元素去获取元素的值就可以了。

你可以先获得父窗口的句柄,按后再来获得combo的句柄就可以了啊

下面这个函数可以获得父窗口。msdn里面复制的。

CWnd::GetParentFrame

CFrameWnd GetParentFrame( ) const;

Return Value

A pointer to a frame window if successful; otherwise NULL

Remarks

Call this member function to retrieve the parent frame window The member function searches up the parent chain until a CFrameWnd (or derived class) object is found

以上就是关于var diag = new Dialog(); diag.show(); d出一个子窗体,如何在子窗体中调用父窗体的函数全部的内容,包括:var diag = new Dialog(); diag.show(); d出一个子窗体,如何在子窗体中调用父窗体的函数、jsp父页面如何获取d出的对话框中的值、求救, 设置触发关闭jQuery.dialog时,刷新父页面的问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10125605.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存