2013-02-12 21 views
0

我的應用由包含內容頁面的主頁面組成。 Masterpage包含JavaScript函數,通過動態選擇和擴展節點來操縱樹視圖。在一個實例中,我試圖通過內容頁面上的代碼隱藏來調用Masterpage上的JavaScript函數,但JavaScript永遠不會被調用。我在JavaScript中放置了斷點,但他們從未受到影響。從內容頁面調用JavaScript不起作用

需要做的事情是,項目被刪除後,內容頁面會重新加載,同時我需要調用javascript函數。

注意:JavaScript確實可以工作,因爲整個系統的動態構建鏈接確實會觸及斷點和函數運行。

這裏是代碼隱藏方法,我自作出調用的javascript:

Protected Overrides Sub OnDelete(ByVal SelectedItems As System.Collections.Specialized.NameValueCollection) 
     For i As Integer = 0 To SelectedItems.AllKeys.GetLength(0) - 1 
      Dim strProjectId As String = SelectedItems.AllKeys(i) 
      Dim objProject As New BSProject(strProjectId) 
      BSProject.Delete(Val(strProjectId), Page) 
      ' log action 
      BSActivity.Log(Page.User.SiteUser.intID, "Project Delete", _ 
         "Project """ & objProject.strProjectName & """ of Organization """ & _ 
         Projects.objOrganization.strName & """ was deleted") 
    Next 
    Dim script As ClientScriptManager = Page.ClientScript 
    script.RegisterStartupScript(GetType(Page), "RefreshProject", "parent.refreshNodeForProjects('" & Projects.objOrganization.intID.ToString() & ":company','" & Projects.objLocation.intID.ToString() & ":location" & "');") ' "parent.refreshNodeForProjects('" & Projects.objOrganization.intID.ToString() & ":company','" & Projects.objLocation.intID.ToString() & ":location" & "');", False) 
    If BSConfig.GetValue("ProjectsRefresh") = "1" Then 
     Response.Redirect(Request.RawUrl) 
    End If 
End Sub 

這裏是母版的JavaScript函數:

   function refreshNodeForProjects(company, location) { 
        try { 
         var tree = $find("<%= radprojecttree.ClientID %>"); 
         if (company != '') { 
          rootnode = tree.findNodeByValue(company); 
          rootnode.set_expanded(false); 
          rootnode.get_treeView().trackChanges(); 
          rootnode.get_nodes().clear(); 
          rootnode.set_expandMode(2); 
          rootnode.get_treeView().commitChanges(); 
          rootnode.set_selected(true); 
          rootnode.set_expanded(true); 
          if (location != '') { 
           rootnode = GetNodebyValue(rootnode, location); 
           rootnode.set_expanded(false); 
           rootnode.get_treeView().trackChanges(); 
           rootnode.get_nodes().clear(); 
           rootnode.set_expandMode(2); 
           rootnode.get_treeView().commitChanges(); 
           rootnode.set_selected(true); 
           rootnode.set_expanded(true); 
          } 
          scrollToNode(tree, rootnode); 
         } 

        } 
        catch (ex) { 
         throw ex; 
        } 
       } 
+0

你爲什麼使用'parent.'?在主/內容頁面中,它們是同一DOM的一部分。 – GalacticCowboy 2013-02-12 17:40:20

+0

我想我正在使用父級,因爲這些頁面顯示在內容頁面區域內的iframe中。沒有父母,JavaScript不會從內容頁面區域內的其他頁面運行。我試圖在沒有父母的情況下運行它。但仍然沒有正面結果 – mattgcon 2013-02-12 17:48:17

+0

您是否考慮過每次頁面被重新發布時添加一個'window.onload'處理函數來執行該函數?我不知道這是否會對你有用,但它可能會更容易。 – 2013-02-12 17:52:31

回答

0

創建的動態註冊腳本塊來處理這個問題。

相關問題