好的,这让我疯了。我尝试了任何可能的解决方案,但它无法正常工作。
问题在于:
我的父页面中有一个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}}
感谢任何支持。
答案 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;