Доступ к свойству внутри динамического элемента управления дает исключение ссылки Null - PullRequest
0 голосов
/ 13 июля 2010

У меня есть приложение с 24 различными формами.У них есть некоторые параметры безопасности, в соответствии с которыми 5 различных кнопок «Подтвердить», «Подтвердить», «Подтвердить», «Подтвердить», «Отклонить» и т. Д. Отключены.

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

Теперь, когда пользователь выбирает кнопку «Отправить», я хочу вызвать метод Save внутри usercontrol формы, поскольку каждая форма будет иметь отдельное сохранение.Поэтому, когда я пробую этот фрагмент кода, я получаю ошибку ссылки Null.Дайте мне знать, как решить это.

Private UCDynamic As UserControl

Затем на событии загрузки страницы я использую этот код

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If not Me.IsPostBack
            UCDynamic = LoadControl("Controls/BkCode.ascx")
            Me.PlaceHolderForm.Controls.Add(UCDynamic)
End if

Затем на событии ButtonClick для отправки я делаю это

 Protected Sub Save_OnClick(ByVal sender As Object, ByVal e As EventArgs)
    Save()
End Sub

Sub Save()
    CType(Me.UCDynamic, controls_BkCode).Save()
End Sub

Вот где я получаюошибка ссылки NullТак что после отправки обратно элемент управления больше не существует на странице.Любые идеи будут с благодарностью.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

Привет Тим ​​Спасибо за вашу помощь.Но Findcontrol не работает для заполнителя.Несмотря на то, что у меня включен режим просмотра для заполнителя, он не удерживает контроль после обратной передачи.

Наконец-то удалось решить эту проблему, переместив мой код LoadControl из поля «Если нет, постбэк».Поэтому я каждый раз загружаю элемент управления, а код внутри элемента управления заботится о логике обратной передачи и данных просмотра для элемента управления.

0 голосов
/ 13 июля 2010

Протокол Http не имеет состояния, поэтому все серверные переменные не имеют значения после обратной передачи.

Вы пытались найти его с помощью FindControl, он должен храниться в Viewstate вашего Placeholder?

Прямая трансляция (Me.PlaceHolderForm.FindControl ("the_id_of_your_usercontrol"), controls_BkCode) .Save ()

...