![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
tol05 |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1632 Регистрация: 21.12.2006 Где: Харьков Репутация: 34 Всего: 170 |
Один мой друг признался, что не знает механизмов динамической привязки контролов к данным. А я вспомнил, что и здесь, на форуме как-то натыкался на вопросы об этом.
Вот, написал как сумел, думаю, новичкам будет интересно почитать. ![]() Для декларативного связывания элементов с данными (в тегах на aspx странице) введено новое динамическое выражение
выражение - свойство/метод или любой код, который возвращает допустимое для связывания значение Синтаксический анализатор страниц ASP.NET распознает этот символ и автоматически создает для экземляра этого контрола обработчик события DataBinding. Выражение вычисляется только после вызова метода DataBind() ! Если его не вызвать - связывания не будет. (при вызове метода DataBind() вызывается событие DataBinding, причем все контролы привязываются к данным в той последовательности, в которой они задекларированы на странице aspx) Новые контролы, представляющие источники данных (например SqlDataSource), привязывают данные к своим контролам управления (например к GridView) без явного вызова DataBind() и не генерируют для страницы события, по которым данные можно запросить. Не подходит к ним выражение <%# выражение %> вот почему если написать в aspx
то тогда, вызвав в Page_Load() метод DataBind(), в методе-обработчике DataBindingMySource свойство MySource.ConnectionString вычисляется и когда анализатор страницы доходит до GridView, то все нормально, методе-обработчике DataBindingGrid MyGrid свои данные получает от MySource но если мы объявим на странице так
то тогда, опять же при вызвове в Page_Load() метода DataBind(), в методе DataBindingGrid обращается за данными к MySource, а он не может их дать, потому что его метод (DataBindingMySource) еще не вызывался (будет вызван после окончания полной обработки MyGrid, в соответствии с деревом елементов страницы) ! Вот и выбрасывается исключение. Для решения этой проблемы введены новые $-выражения:
сразу о префиксах. Это "AppSettings", "ConnectionStrings" или "Resources". Для каждого из них есть отдельный класс, построитель выражения. Назначение - установка свойств контролов в обход стандартного механизма связывания с данными (но все равно, на этапе синтаксического разбора ![]() Поскольку анализатор в этих строках не видит символа "#" то связывание с данными происходит не при вызове DataBinding-ов (когда уже обрабатываются события страницы), а еще при конструировании элемента управления. Анализатор страницы создает объект построителя выражений и засталяет его это выражение построить уже при парсинге. Это сообщение отредактировал(а) tol05 - 17.5.2007, 11:32 -------------------- На хорошей работе и сны хорошие снятся. |
||||||||||
|
|||||||||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |