如何在弹出页面中访问父页面的网格视图中的文本框?

时间:2014-06-13 10:20:15

标签: javascript asp.net javascript-events

我有一个弹出页面,我想获取主页面gridview内的文本框值。 并填充该文本框中的值。

我试过了:

  var Emp = window.opener.document.getElementById('grd_txtEmp');
  Emp.rows[1].cells[3].childNodes[0].value="abc";

我的弹出页面:

  <asp:TemplateField HeaderStyle-BackColor="#C0C0C0" HeaderStyle-BorderColor="Black" HeaderText="Man">
                                      <ItemTemplate>     
                                      <table><tr><td>                                       
                                          <asp:TextBox ID="txtEmpy" runat="server" TextMode="MultiLine"  ontextchanged="txtEmploy_TextChanged" ReadOnly="true" Text='<%# Eval("Empry") %>'  Width="98%"></asp:TextBox>
                                       </td>
                                       <td align="right">
                                       <a href="javascript:window.open('Select.aspx', 'mywindow', 'menubar=1,resizable=1,width=600,height=400, top=200, left=400');">Select</a>   

                                      </td></tr></table>
                                      </ItemTemplate>

                                        <HeaderStyle BackColor="Silver" BorderColor="Black"  Width="30%"/>
                                </asp:TemplateField>

1 个答案:

答案 0 :(得分:0)

据我所知,您在点击网格视图行中的某个链接或按钮时打开弹出窗口。如果这是正确的,那么在打开弹出窗口时,您可以将文本框ID作为查询字符串传递给弹出窗口。然后,您可以从poped up窗口将值设置为正确的文本框。要获取当前行中文本框的id,可以使用jQuery

举个例子,你可以试试这个想法 将css类添加到文本框中,例如&#34; extdata&#34; 将一个css类添加到链接/按钮,例如&#34; popupopener&#34; 然后添加以下jQuery

       $(document).ready(function () {
        $('.popupopener').each(function () {
            $(this).click(function () {
                //If the textbox is at the same level as the link button
                var textBoxId = $(this).closest("table").find('.extdata').attr('id');
                window.open("Select.aspx" + "?textboxid=" + textBoxId, "mywindow", 'menubar=1,resizable=1,width=600,height=400, top=200, left=400');
            }
        );
        });
    });

更改布局如下

<asp:TemplateField HeaderStyle-BackColor="#C0C0C0" HeaderStyle-BorderColor="Black" HeaderText="Man">
                <ItemTemplate>
                    <table>
                        <tr>
                            <td>
                                <asp:TextBox ID="txtEmpy" CssClass="extdata" runat="server" TextMode="MultiLine" OnTextChanged="txtEmploy_TextChanged" ReadOnly="true" Text='<%# Eval("Empry") %>' Width="98%"></asp:TextBox>
                            </td>
                            <td align="right">
                                <a class="popupopener">Select</a>

                            </td>
                        </tr>
                    </table>
                </ItemTemplate>

                <HeaderStyle BackColor="Silver" BorderColor="Black" Width="30%" />
            </asp:TemplateField>