Динамический контроль загрузки в неправильное время? - PullRequest
1 голос
/ 12 июня 2009

Это немного ... странно. По сути, у меня есть форма, которую я создаю с использованием динамических данных ASP.NET, которая будет использовать несколько пользовательских шаблонов полей.

Я только что добавил другое поле в FormView с его собственным настраиваемым шаблоном, и форма загружает этот элемент управления дважды без видимой причины. Хуже того, при первой загрузке шаблона строка еще не готова, и я получаю сообщение об ошибке:

Методы привязки данных, такие как Eval (), XPath () и Bind (), могут использоваться только в контексте элемента управления с привязкой к данным

Я получаю доступ к переменной Row в событии LinqDataSource OnSelected, чтобы получить дочерний объект ...

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

Есть мысли?

EDIT: я заметил, что Page_Load вызывается при первой загрузке (когда Row выдает исключение, если вы пытаетесь его использовать), но НЕ вызывается во второй раз. Если это поможет любому ...

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

РЕДАКТИРОВАТЬ 2: Я проследил проблему рекурсивного использования FindControl для поиска других элементов управления на странице. Очевидно, FindControl может вызывать события жизненного цикла страницы (по крайней мере, до page_load) ... и это происходит до того, как эта страница "должна" загрузиться, так что ее "динамические данные" еще не готовы.

Ответы [ 2 ]

0 голосов
/ 18 июня 2009

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

Если он все еще делает это, начните отцеплять вещи в самом элементе управления. В конце концов вы перейдете к актуальной проблеме.

0 голосов
/ 17 июня 2009

Вы не имеете в виду что-то в Page_Load, которое установлено в OnSelected, а вы? Что-то вроде твоего объекта строки. OnSelected является событием обратной передачи и происходит после Page_Load. Это единственное, о чем я могу подумать, это может вызвать ваше исключение, когда строка не готова.

...