将id从子弹出窗口传递到父窗口

时间:2014-09-12 07:46:07

标签: c# javascript jquery asp.net

在下面的代码中,我有一个父窗口,其中有一个数据网格内的下拉列表和链接按钮。当我点击链接按钮打开一个子弹出窗口,我在其中选择一个员工ID并存储一个隐藏值并传递id到父窗口并在dropdown中绑定。但是我无法传递价值,任何人都可以帮我解决问题。

家长

function ShowPopUp() { 
    var sFeatures = "dialogHeight: 400px;";           
    var myWindow = window.open("/Trans/Quote.aspx", "Quote", 
                               "width=900, height=200", sFeatures);
    window.document.getElementById("<%= btnHiddenForUpdate.ClientID%>").click();  
}
function setValue(myVal) {
    alert(myVal);
    document.getElementById("<%=ddlEMP.ClientID%>").value = myVal;
}
<asp:DropDownList ID="ddlEMP" runat="server" 
    CssClass="cbSupplierName" EnableViewState="True" Width="25%" >
</asp:DropDownList>


<ItemTemplate>                                              
    <asp:LinkButton ID="lnkQuote" runat="server" CommandName="Quote" Text="Quote" />
</ItemTemplate>  

代码隐藏:

ScriptManager.RegisterStartupScript(this, GetType(), "ShowPopUp", "ShowPopUp()", true);

子:

function updateParent() {
    var oVal = document.getElementById("<%=hid.ClientID%>").value;
    window.opener.setValue(oVal);
    window.close();
    return false;
}
<input type="hidden" id="hid" runat="server" />

1 个答案:

答案 0 :(得分:0)

我尝试了这个最小的代码来重现你的问题,但似乎在我的最后工作。

这是我的父窗口:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function ShowPopUp() {
            var sFeatures = "dialogHeight: 400px;";
            var myWindow = window.open("Default2.aspx", "Quote",
                                       "width=900, height=200", sFeatures);
        }
        function setValue(myVal) {
            alert(myVal);
            document.getElementById("<%=ddlEMP.ClientID%>").value = myVal;
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            <asp:DropDownList ID="ddlEMP" runat="server"
                CssClass="cbSupplierName" EnableViewState="True" Width="25%">
                <asp:ListItem Text="testing1" Value="testing1" />
                <asp:ListItem Text="testing" Value="testing" />
            </asp:DropDownList>
            <asp:Button Text="text" runat="server" ID="btnTest" OnClick="btnTest_Click" />
        </div>
    </form>
</body>
</html>

在我打开页面的代码背后:

protected void btnTest_Click(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this, GetType(), "ShowPopUp", "ShowPopUp()", true);
}

和子窗口:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function updateParent() {
            debugger;
            document.getElementById("<%=hid.ClientID%>").value = "testing";
            oVal = document.getElementById("<%=hid.ClientID%>").value;
            window.opener.setValue(oVal);
            window.close();
            return false;
        }

    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button Text="text" runat="server" ID="btnTest" OnClientClick="return updateParent()" />
    <input type="hidden" id="hid" runat="server" />
    </div>
    </form>
</body>
</html>

我建议写一个最小的代码,看看是什么原因造成了问题。 希望它有所帮助./.