在ASP.NET中,頁面跳轉的方法有幾種,如Response.Redirect(),等等,這樣跳轉的結果是當前頁面不見,去了另外一個頁面,要想父視窗存在,彈出強制回應視窗,可以用javascript來實現.
在DataGrid中的模板列中,放一個更新的ImageButton,當點擊時,彈出的這一行詳細資料的子視窗,使用者可以在子視窗中編輯,當使用者關閉子視窗時,父視窗就重新裝載一次.
要想實現上述功能,首先要在父視窗的Datagrid中的ItemDataBound寫如下代碼:
private void dgd_Open_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
for(int i=0;i<dgd_Open.Items.Count;i++)
{
string strID = dgd_OpenInfo.Items[i].Cells[0].Text.ToString();
((ImageButton)(dgd_Open.Items[i].FindControl("cmd_update"))).Attributes.Add("onclick","javascript:showModalDialog('OpenMessage.aspx?tag="+strID+"',window,'dialogwidth:450px;dialogheight:480px;help:0;center:yes;resizable:0;status:0;scroll:yes');return(false);");
}
}
這樣就開啟了一個強制回應視窗,而且傳了一個ID的值給子視窗,關閉子視窗,重新裝載父視窗也是用Javascript來實現,如下:
Response.Write("<script language=javascript>parent.window.opener=null;parent.window.dialogArguments.location.reload();window.close();</script>");
這樣寫Datagrid分了頁後,就有點問題,windows會彈出一個對話筐,要你重新整理視窗,把指令碼該成如下就沒有問題了
Response.Write("<script language=javascript>window.dialogArguments.document.location.href='parent.aspx';window.close();</script>");