C # Проблема с поиском элементов управления внутри вложенных Аккордеонов - PullRequest
3 голосов
/ 21 сентября 2011

У меня есть пользовательский элемент управления, состоящий из двух вложенных аккордеонов с ретранслятором внутри, которые все извлекаются из базы данных. Повторитель имеет флажки с MutuallyExclusiveCheckBoxExtenders внутри. Когда страница отправляется обратно, я пытаюсь использовать LINQ вместе с рекурсивной функцией FindControl, чтобы собрать все 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);
    }
}

Эта функция никогда не находит флажки для их возврата, даже если она отображается правильно.

1 Ответ

0 голосов
/ 16 октября 2011

Может быть, эта ссылка решит вашу проблему.http://dotnetslackers.com/Community/blogs/bmains/archive/2007/01/08/AJAX-Control-Library-Accordion-Problems.aspx

...