LoadControl для одного и того же элемента управления ascx несколько раз в заполнителе - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть UserControl, внутри которого есть простой повторитель. Он имеет свойство data, которое при передаче в элемент управления заполняет ретранслятор, используя стандартную привязку данных

На странице есть заполнитель.

У меня есть цикл, который делает следующее

        Dim qDetail As New UserControls_ReportDataTable
        qDetail = DirectCast(LoadControl("~/UserControls/ReportDataTable.ascx"), UserControls_ReportDataTable)
        qDetail.data = result
        phBCPSACustomQuestions.Controls.Add(qDetail)

Где результат каждый раз отличается.

Проблема в том, что в конце цикла, где я вижу свою страницу, все экземпляры элемента управления заполнены последним набором данных результата.

Есть идеи, почему это происходит?

- Обновление -

Просто некоторые подробности, основанные на комментариях.
Свойство «данные» в элементе управления определяется следующим образом:

Данные о недвижимости как IEnumerable

Я проверил, что результат отличается в каждой итерации цикла.

Это полный код самого цикла

    For Each tblRow As DataRowView In dSet.Tables(0).DefaultView

        Dim result As DataView = dSet.Tables(1).DefaultView
        result.RowFilter = "QID = " & tblRow("QID").ToString


        Dim qDetail As UserControls_ReportDataTable
        qDetail = DirectCast(LoadControl("~/UserControls/ReportDataTable.ascx"), UserControls_ReportDataTable)
        qDetail.data = result
        phBCPSACustomQuestions.Controls.Add(qDetail)

    Next 

1 Ответ

0 голосов
/ 07 февраля 2012

Не видя весь ваш код, я не могу сказать наверняка, но я бы предположил, что вы определяете «результат» вне вашего цикла, а затем устанавливаете его значение внутри цикла.Это приведет к ситуации «Доступ к измененному замыканию» (не знаю, является ли это термином с большей резкостью или глобальным).

В любом случае, определите переменную внутри цикла и установите значениерезультат тут же установите его под свой контроль.Это должно решить вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...