2009-10-26 80 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取決於你必須做的事情......