ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Шрифт:
Затем разместите элемент Label (с названием lblControlInfo) вне контекста Panel, чтобы отображать соответствующий вывод. Учтите в Page_Load то, что мы хотим получить список всех элементов управления, содержащихся в Panel, и присвоить полученные результаты типу Label.
Здесь выполняется цикл по всем типам WebControl, поддерживаемым в Panel, и осуществляется проверка того, что текущий тип не является типом System.Web.UI.LiteralControl. Этот тип используется для представления буквальных HTML-дескрипторов и содержимого (например, ‹br›, текстовых литералов и т.д.). Если вы не выполните такой проверки, вы с удивлением можете обнаружить в контексте Panel целых семь типов (для указанного выше определения *.aspx). В предположений о том, что тип не является буквальным HTML-содержимым, выводится определенная статистическая информация, Пример такого вывода показан на рис. 23.20.
Рис. 23.20. Перечень вложенных элементов
Динамическое добавление (и удаление) элементов управления
Но что делать, если нужно изменить содержимое Panel в среде выполнения? Соответствующий процесс должен показаться вам очень знакомым, если вы внимательно прочитали материал книги, посвященный работе с Windows Forms. Давайте добавим в текущую страницу кнопку (с названием btnAddWidgets), которая будет динамически добавлять в Panel пять новых типов TextBox, и еще одну кнопку, которая будет выполнять очистку Panel от всех элементов управления. Обработчики событий Click для этих кнопок приведены ниже.
Обратите внимание на то, что каждому TextBox назначается уникальное значение ID (newTextBox1, newTextBox2 и т.д.), чтобы можно было программными средствами получить содержащийся в этих элементах текст, используя коллекцию HttpRequest.Form (как будет показано чуть позже).
Чтобы получить значения этих динамически генерируемых типов TextBox, добавьте в пользовательский интерфейс еще один тип Button и тип Label. В пределах обработчика события Click для Button реализуйте цикл по всем элементам, содержащимся в рамках типа HttpRequest.NameValueCollection (доступного с помощью HttpRequest.Form), добавляя полученную текстовую информацию к локальному типу System.String. По завершении обработки
коллекции назначьте эту строку свойству Text нового элемента Label с именем lblTextBoxText.Запустив приложение, вы сможете увидеть как содержимое текстовых блоков, так и довольно длинные ("нечитаемые") строки. Такие строки отражают визуальное состояние элементов на странице и будут рассматриваться позже, в следующей главе. Также вы заметите, что после обработки запроса новые текстовые окна исчезают. Причина опять кроется в природе HTTP – этот протокол не обеспечивает сохранения состояния. Чтобы динамически созданные типы TextBox сохранялись после вторичных запросов, вы должны сохранить состояния этих объектов, используя соответствующие приемы программирования ASP.NET (эти вопросы также рассматриваются в следующей главе).
Исходный код. Файлы примера DynamicCtrls размещены в подкаталоге, соответствующем главе 23.
Основные члены типа System.Web.Ul.WebControls.WebControl
Можно сказать, что тип Control предлагает возможности поведения, не относящиеся к графическому интерфейсу. С другой стороны, базовый класс WebControl обеспечивает полиморфный графический интерфейс для всех Web-элементов поведения, как показано в табл. 23.10.
Таблица 23.10. Свойства базового класса WebControl
Свойства | Описание |
---|---|
BackColor | Читает или устанавливает цвет фона Web-элемента управления |
BorderColor | Читает или устанавливает цвет границы Web-элемента управления |
BorderStyle | Читает или устанавливает стиль границы Web-элемента управления |
BorderWidth | Читает или устанавливает ширину границы Web-элемента управления |
Enabled | Читает или устанавливает значение, являющееся индикатором доступности Web-элемента управления |
СssСlass | Позволяет назначить Web-элементу управления класс, определенный в рамках CSS (Cascading Style Sheet – каскадная таблица стилей) |
Font | Читает информацию о шрифте для Web-элемента управлений |
ForeColor | Читает или устанавливает цвет изображения (обычно цвет текста) для Web-элемента управления |
Height Width | Читает или устанавливает высоту и ширину Web-элемента управления |
TabIndex | Читает или устанавливает индекс перехода по табуляции для Web-элемента управления |
ToolTip | Читает или устанавливает значение-индикатор, указывающее необходимость отображения подсказки при задержке указателя мыши на изображении Web-элемента управления |
Скорее всего, эти свойства будут для вас понятны, так что вместо примеров их использования давайте немного сместим акценты и проверим в действии ряд элементов управления Web-формы ASP.NET.
Категории Web-элементов управления ASP.NET
Типы в System.Web.UI.WebControls можно разбить на несколько больших категорий.
• Простые элементы управления
• Элементы управления с расширенными возможностями