2013-02-12 22 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

创建的动态注册脚本块来处理这个问题。

相关问题