Элементы управления во вложенном элементе повторителя не обрабатываются
Я пытаюсь решить проблему с элементами управления во вложенном репитере, которые не обрабатываются.
Во-первых, позвольте мне проиллюстрировать мой сценарий. У меня есть 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, показанный выше, прекрасно работает при первом проходе через первые узлы
Однако при следующем проходе через второй (и последующий) набор узлов
Я не могу найти ничего, что объясняет, как это исправить. У кого-нибудь есть понимание?
1 ответ
Я чувствую себя идиотом.
Оказывается, с моим кодом все в порядке.
Подузлы не были обработаны, потому что повторители не были обработаны. Мой код включает логику, которая скрывает код (и, следовательно, не обрабатывает повторители), если узлы не имеют никаких значений.
Тем не менее, я держу этот вопрос здесь вместо того, чтобы удалить его для дальнейшего использования.
Извините за потерю пропускной способности у всех - теперь мы возвращаем вас к вашему регулярному спаму.