2011-11-17 60 views
0

我有一個父頁面和子頁面,都是aspx。所有的工作,但現在我想關閉子頁面,如果用戶離開子彈出頁面,並返回到父頁面,並點擊其他像Gridview的頁面索引的東西。如果用戶轉到其他應用或其他位置,我無法關閉彈出式子頁面,如果父頁面上的某些內容發生更改,我只想關閉。如果在父頁面上更改gridview索引,請關閉子頁面aspx頁面

我將PageIndexChange事件設置爲其他用途,我只想添加一些功能,可能是一個腳本管理器來關閉子彈出頁面,如果Gridview索引被更改,Java或其他最有效的方式。

我想我可能還需要檢查子頁面是否打開。

任何幫助和例子將不勝感激。

編輯:這是打開彈出窗口子頁面的代碼...

' Sets up popup to open when row selected for edit is cycled in DataRowBound event 
    If IsPostBack Then 
     If (e.Row.RowState And DataControlRowState.Edit) > 0 Then 
      If Session("updateComplete") <> "Y" And Session("CancelUpdate") <> "Y" Then 
       Dim BrowserSettings As String = "status=no,toolbar=no, scrollbars =yes,menubar=no,location=no,resizable=no," & "titlebar=no, addressbar=no, width=650, height=800" 
       Dim URL As String = "pttStringPopUp.aspx" 
       Dim scriptText1 As String = ("<script>javascript: var w = window.open('" & URL & "','_blank','" & BrowserSettings & "'); </script>") 

       ScriptManager.RegisterStartupScript(Me, GetType(Page), "ClientScript1", scriptText1, False) 
       Session("updateComplete") = "N" 
      End If 
     End If 
    End If 

感謝,

回答

0

您可以在RowDataBound事件附加一個onclick處理程序,並在事件關閉彈出:

protected void GridView1_RowDataBound(object sender, EventArgs e) 
{ 
    e.Row.Attributes["onclick"] = String.Format("rowClick({0});", e.Row.RowIndex); 
} 

ASPX:

var dialog; 
var selectedRowIndex; 

rowClick = function(rowIndex){ 
    if (selectedRowIndex){ 
     if (rowIndex != selectedRowIndex){ 
      selectedRowIndex = rowIndex; 
      if (dialog){ 
       dialog.close(); 
      } 
     } 
    } 
} 
+0

這將不起作用,因爲用戶必須被允許離開子頁面。如果gridview頁面索引更改,我只能關閉子項。 RowDataBound不會給我關閉子頁面的理由,除非我能檢查頁面索引是否已經改變。不知道該怎麼做,或者如何從父頁面關閉子頁面。 – htm11h

+0

我不認爲你理解我的答案。我只是將一個單擊事件附加到'RowDataBound'事件中的'GridViewRow'。當單擊一行並激發JavaScript函數時關閉子窗口。 –

+0

我想我還需要關閉子窗口,也就是說,如果選中的行從導致彈出的行改變了。嗯,我失去了這一個。 – htm11h