Класс Control

advertisement
Из цикла лекций «Технологии разработки Internet-приложений» для студентов 4-го курса кафедры Компьютерных
технологий физического факультета Донецкого национального университета
Технологии
разработки Internetприложений
ASP.NET приложения –
класс Control
проф. В.К.Толстых, www.tolstykh.com
Класс Control
Предок всех серверных элементов управления (Web, HTML, пользовательских, специализированных…)
Класс Control определён в пространстве имён System.Web.UI
Основные потомки Control – это HtmlControl и WebControl
Среди элементов управления могут встречаться как элементы-контейнеры (контейнеры именования,
например , Panel , Table), которые могут содержать дочерние элементы (свойство Controls – содержимое
коллекции контейнера), так и самостоятельные элементы, которые не подразумевают, что у них будут
доступны дочерние элементы (например, Button). В момент генерации страницы происходит рекурсивный
перебор всех элементов управления для генерации конечного HTML-кода, отправляемого пользователю.
Основные свойства класса Control
Свойство
Описание
ID
Идентификатор, задаваемый программистом
UniqueID
Идентификатор, генерируемый системой на сервере на основе ID, если он был задан. Если
элемент управления находится в другом элементе управления, то UniqueID содержит ID,
сцепленное с именем контейнера именования (см. NamingContainer).
ClientID
Атрибута id и/или name в HTML, генерируемый для клиента на основе ID, если он был задан,
иначе он принимает вид типа «_ctlиндекс»
NamingContainer
Возвращает ссылку на объект Контейнер именования (родительский элемент-контейнер). В
контейнере именования к именам дочерних элементов добавляют префикс от родительских
контейнеров, например, кнопка Btn на панели pnl может получить идентификатор UniqueID
– ctrl0$pnl$Btn, а ClientID – ctrl0_pnl_Btn. Если этого не делать, то все составные
элементы будут принадлежать непосредственно странице Page.
Visible
True или false – надо или не надо делать рендеринг элемента. Элемент может быть
невидимым, но его свойства и методы будут доступны
Controls
Коллекция ссылок на дочерние элементы текущего элемента-контейнера
Parent
Возвращает ссылку на родительский элемент
EnableViewState
Указывает должен ли элемент сохранять своё состояние между запросами
EnableTheming
Указывает, применяются ли к элементу управления темы (таблицы стилей, рисунки, скины)
SkinID
Идентификатор обложки элемента. Обложка – множество конкретных значений атрибутов
оформления элементов типа label, button…
TemplateSource
Directory
Возвращает имя виртуального каталога текущей страницы
Атрибут ClientIDMode (ASP.NET 4.0)
Автоматическое формирование клиентских идентификаторов (ClientID) с учётом иерархии контейнеров может
заметно усложнить разработку клиентской части приложения. При разработке клиентских стилей, скриптов
необходимо заранее знать идентификаторы объектов. Например, следующий стиль
#txtName { font-weight: bold; }
придётся оформлять в виде
#ctl00_content_txtName { font-weight: bold; }
«Старый» способ преодоления такой проблемы может иметь вид:
<script type="text/javascript">
var txtName = "<%= txtName.ClientID %>";
</script>
Атрибут ClientIDMode получает или задает алгоритм создания значения свойства ClientID.
Пример формирования статического идентификатора:
<script type="text/javascript">
function f() { document.getElementById("SelectedSport").innerHTML =...; }
</script>
...
<asp:Label ID="SelectedSport" runat="server" ClientIDMode="Static"> </asp:Label>
Значение атрибута ClientIDMode равное AutoID – это традиционное автоматическое формирование
ClientID, Predictable – формирование ClientID с префиксом его контейнера (например,
content_txtName), Inherit – наследует настройки ClientIDMode его родительского элемента управления.
Значение ClientIDMode можно устанавливать и в директиве @Page
Основные методы класса Control
Метод
Описание
ApplayStyleSheetSkin
Применяет обложку в соответствии со SkinID
DataBind
Вызывает для всех дочерних элементов управления метод DataBind
связывания с БД
Dispose
Выполняет задачи очистки для элемента управления перед его удалением
Focus
Передаёт фокус ввода элементу управления
FindControl
Ищет заданный элемент управления в коллекции дочерних
HasControls
Указывает, имеет ли элемент управления дочерние элементы
RenderControl
Делает рендеринг элемента управления
ResolveClientURL
Определяет URL для клиента, чтобы он мог использовать ресурсы сервера
(страницы, рисунки…)
ResolveURL
Возвращает абсолютный URL
События класса Control
Событие
Описание
DataBinding
Связывание элемента с БД
Disposed
Удаление элемента управления из памяти
Init
Инициализация элемента управления
Load
Загрузка в память инициализированного элемента управления
PreRender
Элемент управления готов к рендерингу, вызывается метод RenderControl
Unload
Элемент управления выгружается из памяти
Download