C#在嵌套的Accordions中发现控件

时间:2011-09-20 21:04:39

标签: c# asp.net linq ajaxcontroltoolkit

我有一个用户控件,由两个嵌套的手风琴组成,里面有一个转发器,所有这些都是从数据库中提取的。转发器里面有CheckBoxes和MutuallyExclusiveCheckBoxExtenders。当页面回发时,我试图使用LINQ和递归FindControl函数来收集所有CheckBoxes。问题是没有找到CheckBoxes。

基本结构,为简洁而清理:

<ajaxToolkit:Accordion ID="acc1">
    <ContentTemplate>
       <ajaxToolkit:Accordion ID="acc2">
            <ContentTemplate>
                <asp:Repeater ID="r1">
                    <ItemTemplate>
                        <asp:CheckBox ID="cb1" />
                        <asp:CheckBox ID="cb2" />
                        <ajaxToolkit:MutuallyExclusiveCheckBoxExtender ID="mece1" TargetControlID="cb1" />
                        <ajaxToolkit:MutuallyExclusiveCheckBoxExtender ID="meceMine2" TargetControlID="cb2" />
                    </ItemTemplate>
                </asp:Repeater>
            </ContentTemplate>
        </ajaxToolkit:Accordion>
    </ContentTemplate>
</ajaxToolkit:Accordion>

一切都正确显示。单击按钮,页面上的其他位置,我试图收集所有控件,只显示手风琴控件,一些文字和我正在使用的隐藏字段。

这是我正在使用的递归FindControls函数:

public static void FindControls(Control start, List<Control> list)
{
    list.Add(start);

    foreach (Control c in start.Controls)
    {
        FindControls(c, list);
    }
}

即使正确显示,此函数也永远不会找到CheckBox以返回它们。

1 个答案:

答案 0 :(得分:0)