所选节点已更改

时间:2009-10-26 23:24:56

标签: c# .net asp.net treeview

我有这样的树视图,我想使用Response.Redirect导航到三个不同的页面。

  

→机器组(主要)

     

→→dept(parent)

     

→→→xyz(孩子)

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不包含EventArgs的定义。

如果我用TreeNodeEventArgs替换<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> ,那么该错误就会消失,但我在编译时遇到错误:

  

编译器错误消息:CS0123:“TreeView2_SelectedNodeChanged”没有重载与委托“System.EventHandler”匹配

EventArgs

请帮帮我。

我还想知道TreeNodeEventArgs和{{1}}之间的区别。

感谢。

2 个答案:

答案 0 :(得分:0)

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

要注意的一件事是尝试从而不是尝试从事件args中获取所选节点 使用TreeView2.SelectedNode在所选节点上进行切换。

看起来你已经在那里了一半,因为你以后正在使用那个属性。所以,我不知道你是否已经找到了这个问题,但是没有提到它。

答案 1 :(得分:0)

有一个类似的问题,我在使用TreeNodeEventArgs之前让它工作了,但是你可以根据你要做的事情来做EventArgs然后只是yourTreeView.SelectedNode