點擊按鈕后自動關閉窗口并刷新父窗體

  近來接手一個項目,autoweb開發,但是autoweb提供的模板相對固定,所以,只好用vs來開發,後續用iframe來嵌套到autoweb中。

  其中一個問題,是動態產生的gridview,裏面有兩塊彈出新窗體(沒有用服務器控件!):

<asp:templatefield headertext="管理員更新">
    <ItemTemplate>
       <a href="#" onclick="window.open('rpAdminupdateinfo.aspx?uniqueid=<%#Eval("uniqueID") %>','newwin','height=200,width=300,top=80,left=90,toolbar=no,menubar=no,scrollbars=no, resizable=yes,location=no, status=no')"> <%#Eval("管理員更新信息")%></a>
     </ItemTemplate>
</asp:templatefield>
<asp:templatefield headertext="Eidt">
     <ItemTemplate>
        <a href="#" onclick="window.open('rpAdminDetailEdit.aspx?uniqueid=<%#Eval("uniqueID") %>','newwin','height=320,width=400,top=70,left=80,toolbar=no,menubar=no,scrollbars=no, resizable=yes,location=no, status=no')">修改</a>
      </ItemTemplate>
</asp:templatefield>

彈出新窗體(第二個),設置兩個按鈕(一個用html控件,控制關閉窗體,一個用服務器控件,方便取值):
      

  <asp:Button ID="btnSave" runat="server" Text="保存" OnClick="btnSave_Click"
            CssClass="bt" />
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        <input id="btnCancel" class="bt" onclick="window.close();" type="button"
            value="取消" />

對於【保存】按鈕,保存成功后刷新父窗體,出現一些麻煩。網上查詢,一個方法是,服務器控件button控件在Page_Load事件中添加btn.Attributes.Add("onclick","window.close()");發現,點擊保存按鈕后,btnSave事件根本沒有執行,而是先執行Page_Load事件,然後直接window.close。這aspnet頁面順序看來得時時注意呢。另一個方式是,是用html控件,onclick="window.close()"。這個加載db的數據,有困難。放棄。

最後,還是從btnSave事件著手,在執行完更新后,添加代碼

Response.Write("alter('OK')");
string msg = "window.opener.location.reload();window.close()";
Page.ClientScript.RegisterStartupScript(this.GetType(), "suclog", msg, true);

窗口關閉,父窗體刷新,OK了。

原文地址:https://www.cnblogs.com/dennys/p/3077478.html