2009-10-26 70 views
0

我有一个像这样的树形图,我想使用Response.Redirect导航到三个不同的页面。选定节点已更改

→计算机组(主)

→→部门(父)

→→→某某(孩子)

protected void TreeView2_SelectedNodeChanged(object sender, EventArgs e) 
{ 
    if (TreeView2.SelectedValue == "Machine Groups") 
    { 
     Response.Redirect("~/Gridviewpage.aspx"); 
    } 
    else 
    { 
     switch (e.Node.Depth) 
     { 
      case 0: 
       Response.Redirect("~/Machineupdate.aspx?node=" + TreeView2.SelectedNode.Value); 
       break; 

      case 1: 
       Response.Redirect("~/MachineUpdatechild.aspx?node=" + TreeView3.SelectedNode.Value); 
       break; 
      } 
     } 
    } 
} 
现在

如果我把EventArgs它指向e.Node上的错误System.EventArgs不包含Node的定义。

如果我EventArgsTreeNodeEventArgs替换,那么错误消失,但我得到的编译错误:

编译器错误信息:CS0123:为“TreeView2_SelectedNodeChanged”匹配委托“System.EventHandler”

没有超载
<asp:TreeView ID="TreeView2" runat="server" OnUnload="TreeViewMain_Unload" 
    ontreenodepopulate="TreeView2_TreeNodePopulate" 
    onselectednodechanged="TreeView2_SelectedNodeChanged"> 
    <Nodes> 
     <asp:TreeNode PopulateOnDemand="True" Text="Machine Groups" 
      Value="Machine Groups"></asp:TreeNode> 
    </Nodes> 
</asp:TreeView> 

请帮我一把。

我也想知道EventArgsTreeNodeEventArgs之间有什么区别。

谢谢。

回答

0

所以,这看起来像那些糟糕的API问题之一......我认为在这里传递更具体的事件参数也是合理的!

有一点需要注意的是,不要尝试从事件参数中获取所选节点,请尝试使用TreeView2.SelectedNode在所选节点上进行切换。

看起来你已经到了一半了,因为你以后会使用这个特权。所以,我不知道你是否已经发现了一个问题,但不要提及它。

0

有类似的问题,我不得不使用它之前TreeNodeEventArgs工作,但你可以做EventArgs脱身,然后就yourTreeView.SelectedNode取决于你必须做的事情......