找到多个具有相同 ID“_header”的控件。FindControl 要求控件具有唯一的 ID。错误的解决方法!

今天想用Accordion做点东西,可是总是出错,本想放弃Accordion!

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

   可不想对控件认输,就慢慢的试,结果发现:只是有些版本的AjaxControlToolkit中的Accordion会出现这种情况!

解决方法:

     加上红色代码段就行了

代码
   
   
1 foreach (.........){
2 AccordionPane apPane = new AccordionPane();
3 Label ltTitle = new Label();
4 ltTitle.Text = model.TopName.Trim();
5 ltTitle.ID = model.ID.ToString().Trim();
6 // 该版的AjaxControlToolkit必须加上pane的id否则会报错ID不唯一(其他版本则不会)
7 // apPane.ID = model.ID.ToString().Trim();
8   apPane.HeaderContainer.ID = model.ID.ToString().Trim();
9
10 foreach (DataRow node in dsManager.Tables[ 0 ].Rows)
11 {
12 if (model.ID.ToString().Trim() == node[ " topID " ].ToString().Trim())
13 {
14 HyperLink hlContent = new HyperLink();
15 hlContent.ID = node[ " accessID " ].ToString().Trim();
16 hlContent.Text = node[ " accessName " ].ToString().Trim();
17 hlContent.NavigateUrl = node[ " accessPath " ].ToString().Trim();
18 apPane.ContentContainer.ID = int .Parse(node[ " accessID " ].ToString().Trim()) + i.ToString();
19
20 apPane.ContentContainer.Controls.Add(hlContent);
21 i ++ ;
22 }
23 }
24 apPane.HeaderContainer.Controls.Add(ltTitle);
25 accdAdmin.Panes.Add(apPane);
26 }
27 // 为True时为渐变效果(在伸缩时颜色变淡,伸缩完后颜色恢复正常)
28 // accdAdmin.FadeTransitions = true;
29 // 在选择某一标题后伸展和收缩过渡动画所持续的时间;
30 // accdAdmin.TransitionDuration = 1200;

 

加上红色代码段就行了!初次发表文章,只是想和大家分享一下!O(∩_∩)O~

在 Duilib 中,可以通过 XML 文件结合 CDialogBuilder 类来构建多个列表控件。以下是一个简单的示例代码: 1. 在 XML 文件中定义列表控件: ```xml <VerticalLayout> <!-- 第一个列表 --> <ListUI name="list1" /> <!-- 第二个列表 --> <ListUI name="list2" /> </VerticalLayout> ``` 2. 在代码中使用 CDialogBuilder 类加载并创建 XML 中的控件: ```cpp CDialogBuilder builder; CContainerUI* pContainer = static_cast<CContainerUI*>(builder.Create(_T("layout.xml"), (UINT)0, NULL)); if (pContainer) { CPaintManagerUI paintManager; paintManager.Init(); paintManager.AttachDialog(pContainer); paintManager.AddNotifier(this); // 添加消息响应的通知者 // 获取列表控件 CListUI* pList1 = static_cast<CListUI*>(paintManager.FindControl(_T("list1"))); CListUI* pList2 = static_cast<CListUI*>(paintManager.FindControl(_T("list2"))); // 对列表控件进行操作,如添加元素等 // ... } ``` 在这个示例中,我们首先定义了一个 XML 文件,其中包含两个 ListUI 控件。然后,在代码中使用 CDialogBuilder 类的 Create 方法加载 XML 并创建控件。通过 FindControl 方法可以根据控件的名称获取到对应的 CListUI 对象。接下来,你可以对列表控件进行进一步的操作,如添加元素、设置属性等。 需要注意的是,示例中的代码仅为演示目的,实际使用时可能需要根据具体情况进行适当的调整。 希望这个示例能对你有所帮助,如果有其他问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值