我有这样的树视图,我想使用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}}之间的区别。
感谢。
答案 0 :(得分:0)
所以,这看起来像是一个糟糕的API问题......我认为在这里传递更具体的事件参数也是合理的!
要注意的一件事是尝试从而不是尝试从事件args中获取所选节点 使用TreeView2.SelectedNode在所选节点上进行切换。
看起来你已经在那里了一半,因为你以后正在使用那个属性。所以,我不知道你是否已经找到了这个问题,但是没有提到它。
答案 1 :(得分:0)
有一个类似的问题,我在使用TreeNodeEventArgs
之前让它工作了,但是你可以根据你要做的事情来做EventArgs
然后只是yourTreeView.SelectedNode
。