从子页面刷新父页面不起作用

时间:2016-11-17 20:15:35

标签: c# asp.net popupwindow aspxgridview

好的,这让我疯了。我尝试了任何可能的解决方案,但它无法正常工作。

问题在于:

我的父页面中有一个gridview。每行都有一个“编辑”按钮,可以打开一个新页面:

<script>
        function RefreshParent() {

            window.opener.document.getElementById('Button1').click();
            window.close();
        }
</script>    

在Child页面中,我填充db中的所有字段,点击“update”将所有数据保存到dab中并关闭当前页面:

window.opener.location.reload(true);

Button1包含一种从db刷新Gridview数据的方法。

我尝试过以下代码,但它没有刷新gridview:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
                 <asp:ScriptManager ID="ScriptManager1" runat="server">
                 </asp:ScriptManager>
                <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" AutoGenerateDeleteButton="True"  OnRowDeleted="GridView1_RowDeleted" OnRowDeleting="GridView1_RowDeleting"  BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Vertical">
                    <AlternatingRowStyle BackColor="#DCDCDC" />
                    <Columns>
                        <asp:TemplateField ShowHeader="False">
                            <ItemTemplate>

                                <asp:Button ID="Button1" runat="server" CausesValidation="false" CommandName=""  Text="Edit" OnClientClick='<%# Eval("ID", "window.open(\"EditFrm.aspx?ID={0}\", null, \"width=700,height=600,top=100,left=300\", \"true\");") %> '/>
                            </ItemTemplate>
                        </asp:TemplateField>

// Column definition


            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="GridView1" />
            </Triggers>
        </asp:UpdatePanel>

以下是我父窗口中gridview的定义:

{{1}}

感谢任何支持。

1 个答案:

答案 0 :(得分:0)

这真的很有趣。 我用下面的代码解决了这个问题。这可以防止在C#更新之前运行javascript函数。

<asp:placeholder id="refresh_script" visible="false" runat="server">
                    <script>           
                        window.opener.location.reload();
                        window.close();                    
                    </script> 
                  </asp:placeholder>   

然后你需要将它添加到.cs

后面的代码中
refresh_script.Visible = true;