- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен
Шрифт:
Интервал:
Закладка:
Таблица 23.5. Подборка членов System.Web.UI.Control
Член Описание Controls Свойство, получающее объект ControlCollection, представляющий дочерние элементы управления в рамках данного элемента управлений DataBind() Метод, выполняющий привязку источника данных к вызванному серверному элементу управления и всем его дочерним элементам управления EnableTheming Свойство, указывающее возможность поддержки тем для данного элемента управления HasControls() Метод для определения наличия дочерних элементов управления у данного серверного элемента управления ID Свойство, читающее или устанавливающее значение программного идентификатора для серверного элемента управления Page Свойство, получающее ссылку на экземпляр типа Page, содержащий серверный элемент управления Parent Свойство, получающее ссылку на родительский элемент управления данного серверного элемента управления в иерархии элементов управления страницы SkinID Свойство, читающее или устанавливающее параметры скиннинга элемента управления. Это дает возможность в ASP.NET 2.0 устанавливать внешний вид элемента управления динамически Visible Свойство, читающее или устанавливающее значение, указывающее необходимость обработки серверного элемента управления, как элемента пользовательского интерфейса страницыСписок вложенных элементов управления
Первой из рассматриваемых здесь Особенностей System.Web.UI.Control является то, что все Web-элементы управления (это также относится и к Page) наследуют коллекцию пользовательских элементов управления (доступную с помощью свойства Controls). Во многом аналогично случаю приложений Windows Forms, в данном случае свойство Controls обеспечивает доступ к строго типизованной коллекции объектов WebControl. Подобно любой коллекции .NET, вы имеете возможность динамически добавлять и удалять элементы этой коллекции в среде выполнения.
Хотя добавлять Web-элементы управления в Page-тип можно и непосредственно, намного проще (и безопаснее) использовать для этого элемент управления Panel. Класс System.Web.UI.WebControls.Panel представляет контейнер элементов управления, который может быть видимым или невидимым для конечного пользователя (в зависимости от значений свойств Visible и BorderStyle).
Для примера создайте новый Web-узел с названием DynamicCtrls. В окне проектирования Web-страницы Visual Studio 2005 добавьте тип Panel (назначив ему имя myPanel), содержащий элементы TextBox, Button и HyperLink с произвольными именами (учтите, что режим проектирования требует, чтобы при перетаскивании внутренние элементы помещались в зону интерфейса типа Panel). В результате элемент ‹form› вашего файла *.aspx должен принять следующий вид.
‹asp:Panel ID="myPanel" runat="server" Height="50px" Width="125px"›
‹asp:TextBox ID="TextBox1" runat="server"›‹/asp:TextBox›‹br /›
‹asp:Button ID="Button1" runat="server" Text="Кнопка" /›‹br /›
‹asp:HyperLink ID="HyperLink1" runat="server"›Гиперссылка‹/asp:HyperLink›
‹/asp:Panel›
Затем разместите элемент Label (с названием lblControlInfo) вне контекста Panel, чтобы отображать соответствующий вывод. Учтите в Page_Load() то, что мы хотим получить список всех элементов управления, содержащихся в Panel, и присвоить полученные результаты типу Label.
public partial class _Default: System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
ListControlsInPanel();
}
private void ListControlsInPanel() {
string theInfo;
theInfo = String.Format("Присутствие элементов: {0}‹br›", myPanel.HasControls());
foreach (Control с in myPanel.Controls) {
if (c.GetType() != typeof(System.Web.UI.LiteralControl)) {
theInfo += "***************************‹br›";
theInfo += String.Format("Name = {0}‹br›", с.ToString());
theInfo += String.Format("ID = {0}‹br›", c.ID);
theInfo += String.Format("Visible = {0}‹br›", c.Visible);
theInfo += String.Format("ViewState = {0}‹br›", c.EnableViewState);
}
}
lblControlInfo.Text = theInfo;
}
}
Здесь выполняется цикл по всем типам WebControl, поддерживаемым в Panel, и осуществляется проверка того, что текущий тип не является типом System.Web.UI.LiteralControl. Этот тип используется для представления буквальных HTML-дескрипторов и содержимого (например, ‹br›, текстовых литералов и т.д.). Если вы не выполните такой проверки, вы с удивлением можете обнаружить в контексте Panel целых семь типов (для указанного выше определения *.aspx). В предположений о том, что тип не является буквальным HTML-содержимым, выводится определенная статистическая информация, Пример такого вывода показан на рис. 23.20.
Рис. 23.20. Перечень вложенных элементов
Динамическое добавление (и удаление) элементов управления
Но что делать, если нужно изменить содержимое Panel в среде выполнения? Соответствующий процесс должен показаться вам очень знакомым, если вы внимательно прочитали материал книги, посвященный работе с Windows Forms. Давайте добавим в текущую страницу кнопку (с названием btnAddWidgets), которая будет динамически добавлять в Panel пять новых типов TextBox, и еще одну кнопку, которая будет выполнять очистку Panel от всех элементов управления. Обработчики событий Click для этих кнопок приведены ниже.
protected void btnAddWidgets_Click(object sender, EventArgs e) {
for (int i = 0; i ‹ 5; i++) {
// Назначение имени, чтобы позже получить соответствующее
// текстовое значение с помощью метода
// HttpRequest.QueryString().
TextBox t = new TextBox();
t.ID = string.Format("newTextBox{0}", i);
myPanel.Controls.Add(t);
ListControlsInPanel();
}
}
protected void btnRemovePanelItems_Click(object sender, EventArgs e) {
myPanel.Controls.Clear();
ListControlsInPanel();
}
Обратите внимание на то, что каждому TextBox назначается уникальное значение ID (newTextBox1, newTextBox2 и т.д.), чтобы можно было программными средствами получить содержащийся в этих элементах текст, используя коллекцию HttpRequest.Form (как будет показано чуть позже).
Чтобы получить значения этих динамически генерируемых типов TextBox, добавьте в пользовательский интерфейс еще один тип Button и тип Label. В пределах обработчика события Click для Button реализуйте цикл по всем элементам, содержащимся в рамках типа HttpRequest.NameValueCollection (доступного с помощью HttpRequest.Form), добавляя полученную текстовую информацию к локальному типу System.String. По завершении обработки коллекции назначьте эту строку свойству Text нового элемента Label с именем lblTextBoxText.
protected void btnGetTextBoxValues_Click(object sender, System.EventArgs e) {
string textBoxValues = "";
for(int i = 0; i ‹ Request.Form.Count; i++) {
textBoxValues += string.Format("‹li›{0}‹/li›‹br›", Request.Form[i]);
}
lblTextBoxText.Text = textBoxValues;
}
Запустив приложение, вы сможете увидеть как содержимое текстовых блоков, так и довольно длинные ("нечитаемые") строки. Такие строки отражают визуальное состояние элементов на странице и будут рассматриваться позже, в следующей главе. Также вы заметите, что после обработки запроса новые текстовые окна исчезают. Причина опять кроется в природе 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.