如何将子窗口的值传到父窗口去调用

这是我当初的问题" 现在我想实现这样一个功能 现在父窗口有一个select控件,同时有一个"增加"按钮, 点击按钮,弹出一个窗口, 这时弹出窗口也有一个table,同时有一个"确认"按钮 table中有若干项,每一行对应一条记录,并有一个checkbox,选中这个checkbox就等于选中 了这条记录, 代码大致这样 <table>   <tr>    <td><input type="checkbox" name="recode" value="<%=recode1%"></input>nbsp$; nbsp$; nbsp$; <%=recode1%>></td>   </tr> </table>

其实这个表格也是动态生成,所以记录的条数也是不确定的 现在我们这个表格中选中若干条记录 然后点击确定,就能把这几条记录,加到我们的父窗口select控件中 注意不能用jsp这类服务器端语言,就用javascipt 该怎么实现啊,有些头疼啊 关键是如何动态增加select的option?? 大虾帮忙啊"

首先取得父窗口可以用"window.opener" 现在思路是这样的在子窗口获取子窗口的控件对象,然后将其作为参数传入父窗口中 我干脆把code贴过来,再加上注释吧

<script language="javascript"> function apply()     {          //获取子窗口中checkbox控件对象数组,注意获取对象数组的方法          var chkGroup=document.getElementsByName("chkGroup");         //调用父窗口的对应方法,调用模式是window.opener.方法(参数)          window.opener.addSel(chkGroup);         //关闭当前窗口          window.close();     } </script > 这是在子窗口中的关键code

 

<script language="javascript">        function addSel(chkGroup)     {        if(null==chkGroup)            {             alert("当前没有组可以增加");            }          else          {              var selCtrl = document.getElementById("belongGroup");                           var len= chkGroup.length;              var opt= null;              var chk=null;                                       for(i=0;i<len;i++)              {                                 if(chkGroup.checked)                  {                    chk = chkGroup;     // opt =  new Option(chk.name,chk.value,false,false);                     opt =  document.createElement('option');                   opt.value=chk.value;                   opt.text=chk.name;                   selCtrl.add(opt,selCtrl.length);                                 }              }          }         } </script > 这是在父窗口中的关键code

大家可以注意一下,创建select控件的option有两种方法 一种是直接当做对象,new 出来 例如你可以 opt =  new Option(chk.name,chk.value,false,false); 第二种是调用document的方法来创建  opt =  document.createElement('option');  当然这样就必须在多加上几行赋值的代码.例如 opt.value=chk.value;   opt.text=chk.name; 而select控件增加option的方法就是  selCtrl.add(Option对象,索引); 之前在网上有另外一个方法 selCtrl.appendChild(Option对象); 这个方法不好使,不知为什么,Option对象确实是附加上去,但是值却是空的 即在select控件中点击,确实有对应option存在,看到的却是空白

而且另外一个地方,我最初是想把对父窗口select控件的增加的那段code也放在子窗口中 但是也就是不好使,不理解这是为何 所以后来只好把checkbox的控件数值作为参数传递给父窗口的方法

 

几个注意的地方,写javascript的时候常常会不自觉引入java的思维 例如变量类型,例如String str, int x之类,在方法定义的时候 也会是function method(var xx){}这样的东东 记住,方法声明一定function method(xx){} ,变量可以是var str,var xx

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在WinForms中,窗口可以调用窗口的方法。首先,确保子窗口的方法是公共的,以便窗口可以访问。然后,可以通过以下步骤在窗口调用窗口的方法。 1. 添加窗口的实例作为窗口的成员变量。在窗口的代码中声明如下: ```csharp private ChildForm childForm; ``` 2. 在窗口中创建子窗口的实例。通常在某个事件的处理方法(例如按钮点击事件)中进行实例化,如下所示: ```csharp private void OpenChildFormButton_Click(object sender, EventArgs e) { childForm = new ChildForm(); childForm.Show(); } ``` 3. 在窗口的代码中,你可以直接通过子窗口实例来调用窗口的方法。例如,如果子窗口有一个名为"ChildMethod"的公共方法,可以通过以下方式调用: ```csharp childForm.ChildMethod(); ``` 通过这种方式,窗口就可以在需要的时候调用窗口的方法。确保在调用窗口的方法之前,已经实例化了子窗口,否则可能会引发空引用异常。另外,确保在需要时为子窗口的方法定义参数,以便从窗口传递所需的数据。 ### 回答2: 在WinForm中,窗口调用窗口的方法可以通过以下几个步骤实现。 1. 首先,在窗口中创建一个子窗口的实例。可以在构造函数中实例化子窗口对象,或者在需要调用窗口方法的地方进行实例化。 2. 然后,通过子窗口实例对象来访问子窗口的公共方法。可以使用点操作符(.)来访问子窗口中的公共方法。 3. 在窗口中,调用窗口的方法。可以在窗口中的某个事件处理程序中调用窗口的方法,或者在其他需要的地方进行调用。 以下是一个示例代码来说明如何在窗口调用窗口的方法: // 在窗口中创建子窗口的实例 ChildForm childForm = new ChildForm(); // 调用窗口中的公共方法 childForm.MethodName(); 在上述代码中,首先创建了一个子窗口的实例`childForm`,然后通过该实例对象来调用窗口中的`MethodName`方法。 需要注意的是,如果子窗口的方法需要传递参数,则需要在调用窗口方法时提供相应的参数。 以上所述是在WinForm中窗口调用窗口方法的一种常见方法。具体实现方式可以根据需求和具体场景的不同而有所不同。 ### 回答3: 在WinForms中,窗口可以调用窗口的方法,可以通过以下步骤实现: 首先,在窗口中创建一个子窗口的实例。 然后,通过实例调用窗口的公共方法。 具体实现步骤如下: 1. 在窗口的代码中,创建一个子窗口的实例。例如,假设子窗口的名称为ChildForm,可以在窗口代码中添加以下代码: ChildForm child = new ChildForm(); 2. 调用窗口方法。通过上一步创建的子窗口实例,可以调用窗口中的公共方法。例如,如果子窗口中有一个名为ChildMethod的方法,可以使用以下方式在窗口调用该方法: child.ChildMethod(); 通过上述步骤,窗口就可以调用窗口的方法了。 需要注意的是,窗口必须要先创建子窗口的实例才能调用窗口的方法。另外,子窗口的方法必须是公共方法,否则窗口无法访问到子窗口的方法。 总结起来,窗口调用窗口的方法需要先创建子窗口实例,然后通过实例调用窗口的公共方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值