【问题标题】:ArgumentOutOfRange when adding root level nodes into treeview将根级别节点添加到树视图时的 ArgumentOutOfRange
【发布时间】:2011-10-30 10:45:02
【问题描述】:

当我尝试使用以下代码将节点添加到树视图中时,出现 ArgumentOutOfRange 异常:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Page.User.Identity.IsAuthenticated)
            {
               NavigationTree.Nodes.Add(AuthUserNode);

            }
            else
            {
                NavigationTree.Nodes.Remove(AuthUserNode);
            }
         }
     }

但是我可以将节点添加为某个节点的子节点

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Page.User.Identity.IsAuthenticated)
            {
               NavigationTree.Nodes[0].ChildNodes.Add(AuthUserNode);

            }
            else
            {
                NavigationTree.Nodes.Remove(AuthUserNode);
            }
         }
     }

我在这里错过了什么?

【问题讨论】:

  • 不知道但是否只允许一个根节点?
  • 不,不是——而且文档:msdn.microsoft.com/de-de/library/58hx3b2a.aspx 没有给出“OutOfRange”异常的提示......奇怪。 AuthUserNode 来自哪里?
  • 你怎么知道else语句中有需要删除的节点?您是否尝试在没有节点时删除节点?
  • 插入字符串而不是节点,代码会运行吗?
  • @Ben:我首先想到的是相同的思路,但文档没有说明任何关于删除的异常 - 我猜如果树节点不是集合的端口,它只是忽略调用(与其他实例相同)框架中的 .Remove - 只有在正常情况下你会得到一个布尔答案)

标签: c# asp.net treeview


【解决方案1】:

我终于找到了错误。当节点已经存在于该级别时,它会被抛出。不过,我希望这个例外更能说明问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-28
    • 2012-02-10
    • 2013-03-25
    • 2010-11-26
    • 2017-11-18
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多