一、目的說明:
頁面中有一個Buttn,名稱為btnNew。它將彈出一個新增內容的頁面。
頁面中有一個gridview用於顯示資料。gridview的最後兩列是“詳細”和“刪除”。
現在要求btnNew彈出新的視窗,用於新增資料。
GidView中的“詳細”列彈出新的視窗,用於查看資料。
GidView中的“刪除”列用於刪除當前行的資料。
現在問題來了。
問題1、用Response.Redirect的方法無法在開啟新視窗。
問題2、如果使用form中的target='_blank'屬性,當單擊GridView中的刪除時,會出彈出新的視窗。
問題3、如果將“刪除”變成<a href='xxx.aspx' target='_blank'>刪除</a> 的形式。無法調用後代代碼,除非使用Ajax。
問題4、如要使用js的window.open()方法。當使用“window.opener.location.href=window.opener.location.href” 重新整理父視窗時,不能重新整理gridview中的資料。 當使用“window.opener.location.reload();” 重新整理父視窗時,每次重新整理都彈出讓從新發送訊息的對話方塊,讓點確定重發訊息來重新整理頁面(後一種方法是網友測試的)。
二、解決方案為:
1、當單擊BtnNew方法時,讓form.target='_blank',這樣所有連結都會在新視窗中開啟。
2、當單擊刪除時,先讓form.target='_self'。這樣就不會彈出新的視窗。
三、代碼如下:
1、單擊btnNew前讓form.target='_blank'。此方法放在load事件中。
protected void Page_Load(object sender, EventArgs e)
{
try
{
if (!IsPostBack)
{
btnNew.Attributes.Add("onclick", "form.target='_blank'");
}
}
catch (Exception error)
{
}
}
2、在刪除前讓先讓form.target='_self'代碼:此事件放在gridview的RowDataBound事件中。代碼:
protected void gvwList_RowDataBound(object sender, GridViewRowEventArgs e)
{
//隱藏Key
e.Row.Cells[0].Visible = false;
//不顯示快顯視窗,並刪除提示。
e.Row.Cells[e.Row.Cells.Count - 1].Attributes["onclick"] = "document.forms[0].target='_self'; return confirm('確定刪除嗎?');";
}