none
FindControl 要求控件具有唯一的 ID。 RRS feed

  • 问题

  • 使用Accordion动态生成菜单会出现如下错误;

    找到多个具有相同 ID“_header”的控件。FindControl 要求控件具有唯一的 ID。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Web.HttpException: 找到多个具有相同 ID“_header”的控件。FindControl 要求控件具有唯一的 ID。
    ========================
    代码:
        protected void DisplayMenu()
        {
          
            IList<SysFun> sfParentNodes = SysFunManager.GetAllParentNodes();
        
            foreach (SysFun parentNode in sfParentNodes)
            {
                AccordionPane ap = new AccordionPane(); 
                Label lblParentMenu = new Label();
                lblParentMenu.Text = parentNode.DisplayName;/
                ap.HeaderContainer.Controls.Add(lblParentMenu); 
                int nodeId = parentNode.NodeId; 
                IList<SysFun> sfChildNodes = SysFunManager.GetChildNodesById(nodeId);
                foreach (SysFun childNode in sfChildNodes)
                {
                    Label lblChildMenu = new Label();            
                    lblChildMenu.Text = "<br>" + childNode.DisplayName + "<br>";

                    ap.ContentContainer.Controls.Add(lblChildMenu);
                }
                Accordion1.Panes.Add(ap);
            }
        }

    2009年8月15日 9:14

答案

  • 我是这样想的 , 既然遍历时不能让ID相同 那就在每次遍历时改变ID的名字
    int i = 1;
    AccordionPane ap = new AccordionPane(); 
                ap.ID = Convert.ToString(i++);
    算是运行成功


    • 已标记为答案 找自己 2009年8月15日 13:47
    2009年8月15日 13:44

全部回复

  • 要给每个对象设置一个不同的id。
    出现那样的错说明:一些服务器控件的id是重复的,必须改成相互不同的,要是代码创建的对象,则要设置id属性
    【孟子E章】
    2009年8月15日 10:04
    版主
  • 设置ID属性是在实例化控件对象时给ID赋值吗?
    AccordionPane ap = new AccordionPane(); 
    ap的id?
    2009年8月15日 10:15


  •  Label l = new Label();
            l.ID = this.UniqueID;
            l.Text = "111111111";
    2009年8月15日 12:01
  • 我是这样想的 , 既然遍历时不能让ID相同 那就在每次遍历时改变ID的名字
    int i = 1;
    AccordionPane ap = new AccordionPane(); 
                ap.ID = Convert.ToString(i++);
    算是运行成功


    • 已标记为答案 找自己 2009年8月15日 13:47
    2009年8月15日 13:44