Элементы управления во вложенном элементе повторителя не обрабатываются

Я пытаюсь решить проблему с элементами управления во вложенном репитере, которые не обрабатываются.

Во-первых, позвольте мне проиллюстрировать мой сценарий. У меня есть XML, который выглядит так:

<ParentNode>
    <SubNode>
        <SomeNode></SomeNode>
        <SomeNode></SomeNode>
        <SomeNode></SomeNode>
    </SubNode>
    <SubNode>
        <SomeNode></SomeNode>
        <SomeNode></SomeNode>
        <SomeNode></SomeNode>
    </SubNode>
    <SubNode>
        <SomeNode></SomeNode>
        <SomeNode></SomeNode>
        <SomeNode></SomeNode>
    </SubNode>
</ParentNode>

Чтобы обработать это, у меня есть вложенные повторители, которые выглядят так:

<!-- note: XPath for DataSource = "/ParentNode/SubNode" -->
<asp:Repeater ID="ProcessSubNode" runat="server">
    <ItemTemplate>
        <!-- note: XPath for DataSource = "/ParentNode/SubNode/SomeNode" -->
        <asp:Repeater ID=ProcessSomeNode" runat="server">
            <ItemTemplate>
                <!-- some miscellaneous web forms code goes here -->
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

У меня есть обработка кода для сохранения моих данных, которая выглядит следующим образом:

Protected Sub OnSave()
    For Each itemSubNode As RepeaterItem In Me.ProcessSubNode.Items
        For Each itemSomeNode As RepeaterItem In CType(itemSubNode.FindControl("ProcessSomeNode"), Repeater).Items
            ' some processing code goes here
        Next
    Next
End Sub

Вот моя проблема: мой код OnSave, показанный выше, прекрасно работает при первом проходе через первые узлы (он обрабатывает все узлы без проблем).

Однако при следующем проходе через второй (и последующий) набор узлов он вообще не видит узлов внутри него. Цикл For Each переходит к следующему , как будто узлы даже не существуют.

Я не могу найти ничего, что объясняет, как это исправить. У кого-нибудь есть понимание?

1 ответ

Решение

Я чувствую себя идиотом.

Оказывается, с моим кодом все в порядке.

Подузлы не были обработаны, потому что повторители не были обработаны. Мой код включает логику, которая скрывает код (и, следовательно, не обрабатывает повторители), если узлы не имеют никаких значений.

Тем не менее, я держу этот вопрос здесь вместо того, чтобы удалить его для дальнейшего использования.

Извините за потерю пропускной способности у всех - теперь мы возвращаем вас к вашему регулярному спаму.

Другие вопросы по тегам