SlideShare a Scribd company logo
1 of 30
Крос-платформне програмування
Лекція 11
Користувацькі елементи керування
30 травня, 2014
Примітка: частину слайдів лекції підготовлено за
матеріалами курсу В.Снєткова
http://www.intuit.ru/studies/courses/591/447/lecture/9960
Види власних елементів керування
• Користувацький ЕК (user control, UC) – невелика
частина сторінки, яка може містити статичний
HTML-код і серверні елементи керування Web
– Можуть багаторазово використовуватися на безлічі
сторінок одного і того ж Web-застосування
– Підтримують створення своїх властивостей, подій та
методів
• Спеціалізовані серверні ЕК (server custom
control, SCC) – скомпільовані класи, які
програмним чином генерують свій власний
HTML-код
– Завжди попередньо компілюються у DLL-бібліотеки
збірок
Особливості користувацьких елементів керування
• починаються з директиви @Control, а не @Page
• файл користувацького ЕК не є окремою сторінкою,
тому не повинен містити дескриптори <html>,
<head>, <body>, <form>
• розширення користуваць-
ких ЕК – .ascx, а не .aspx
• об’єкт сторінки походить
від класу Page, а об’єкт
користувацького ЕК – від
класу UserControl
• файли прихованого коду є
нащадками класу
System.Web.UI.UserControl
• не можуть бути запитані самим клієнтом, а,
навпаки, впроваджуються в інші Web-сторінки
Створення користувацького елементу керування
Алгоритм:
1. «Add new Item» - «Web User
Control»
2. Наповнення користувацького елементу
3. Перетягування користувацького
елементу у потрібні форми
Додавання користувацького елементу керування
на стрінку
Алгоритм:
1. «Add new Item» - «Web User
Control»
2. Наповнення користувацького елементу
3. Перетягування користувацького
елементу у потрібні форми
Обробка подій
• Стандартний ЕК LinkButton знімає з таймера
севера та відображає клієнту поточний час
Додавання властивостей
• Тестова сторінка Default2.aspx містить два елемента
керування
Порядок генерації подій ініціалізації
• Виконується віддалений запит сторінки і вона заванта-
жується у пам'ять сервера
• Конструктором класу створюється та ініціалізується
користувацький ЕК
• Присвоюються значення атрибутів, передбачені в
дескрипторі користувацького ЕК
• Створюється об'єкт батьківської сторінки
• Виконується подія Page.Load батьківської сторінки, в
обробнику Page_Load() якої можна передбачити пере-
призначення атрибутів, властивостей користувацького ЕК
• Виконується подія Page.Load користувацького ЕК
Використання спеціальних об’єктів
1. Створити веб-форму
з розділеним кодом та
ім'ям
LinkTableTest.aspx
2. Зробити цю сторінку
стартовою
3. Додати до проекту
нову папку з ім'ям
App_Code
1
3
2
Використання спеціальних об’єктів (2)
4. До папки App_Code додати новий клас C# з ім'ям
LinkTableItem.cs, що містить наступний код
Використання спеціальних об’єктів (3)
5. Створити користувацький елемент керування з
розділеним кодом та ім'ям LinkTable
Використання спеціальних об’єктів (4)
6. Файл LinkTable.ascx.cs заповнити наступним кодом
7. Розмістити користувацький елемента керування на тестовій
сторінці LinkTableTest.aspx
Використання спеціальних об’єктів (5)
8. Налаштувати файл LinkTableTest.aspx.cs
Делегати
• Делегат - об'єкт, який може посилатися на
метод
– Дозволяє динамічно викликати метод, на який він
посилається, під час виконання
• Об'єкт делегата підтримує три фрагмента
інформації
– адресу методу, на якому він викликається
– аргументи (якщо вони є) цього методу
– значення, що повертається (якщо воно є), цього
методу
delegate тип_що_повертається ім’я (список_параметрів);
– тип_що_повертається - тип значення, що повертається
методами, які будуть викликатися делегатом
– ім’я - конкретне ім'я делегата
– список_параметрів - параметри, необхідні для
методів, що викликаються делегатом
Приклад: застосування методів екземпляра в
якості делегатів
• Метод, що викликається,
може бути методом
екземпляра, пов'язаним з
об'єктом, або статичним
методом, пов'язаним з
конкретним класом
• Тип і сигнатура метода,
що повертається, повинні
співпадати з тими, які
вказані в оголошенні
делегата
• Коли відбувається звер-
нення до екземпляра
делегата IntOperation,
викликається метод, на
який він посилається
Приклад: групова адресація
• Групова адресація – можли-
вість створити список або
ланцюжок викликів для
методів, які викликаються
автоматично при зверненні
до делегата
• Для цього достатньо
отримати екземпляр
делегата, а потім додати
методи в ланцюжок за
допомогою оператора +
або +=
• Для видалення методу
служить оператор - або -=
Подія
• Подія - автоматичне повідомлення про те, що
відбулася деяка дія
– об'єкт, що виявляє інтерес до події, реєструє
обробник цієї події
– коли подія відбувається, викликаються всі зареєстро-
вані обробники цієї події
– обробники подій зазвичай представлені делегатами
– події підтримують групову адресацію, що дозволяє
декільком об'єктам реагувати на повідомлення про
подію
• Оголошення події
event делегат_події ім’я_події;
– делегат_події - ім'я делегата, використовуваного для
підтримки події
– ім’я_події - конкретний об'єкт оголошеної події
Обробка подій у середовищі .NET Framework
• Об'єкт надає свої методи-обробники для
реагування на виникнення події. Говорять, що
об'єкт підписався на деяку подію
• Оголошення обробника подій
void обробник(object відправник, EventArgs е)
{ ... }
– відправник - посилання на об'єкт, що формує подію
– е - параметр типу EventArgs, що містить додаткову
інформацію про подію, яка потрібна обробнику
• Клас EventArgs не містить поля, які можна
використати для передачі обробнику додаткових
даних, він служить базовим класом, від якого
отримують похідний клас, що містить всі
необхідні поля
Додавання подій
1. Змінити тип елемента в шаблоні <ItemTemplate>
дескрипторного подання файла LinkTableExt.ascx на нове
ім'я атрибута CommandArgument
Додавання подій (2)
2. Оголосити клас LinkTableEventArgs для упаковки
переданої в подію інформації та делегата події в
глобальній області видимості у файлі LinkTableExt.ascx.cs
підтримки користувацького ЕК
Додавання подій (3)
3. У файлі LinkTableExt.ascx у режимі Design створити
обробник для події ItemCommand для користувацького ЕК
Додавання подій (4)
4. У режимі Design тестової сторінки розмістіть елемент
Label з вкладки Standard, задайте йому ім'я lblInfo
5. У файлі LinkTableExtTest.aspx.cs заповніть обробник
LinkClicked наступним кодом
Додавання подій (5)
6. Підключити обробник можна двома способами:
•додати ім’я згенерованого обробника в атрибут
OnLinkClicked дескриптора <uc1:LinkTable> файлу
тестової сторінки LinkTableExtTest.aspx
•підключити обробник за допомогою коду делегата у
файлі LinkTableExtTest.aspx.cs в кінці обробника події
Page_Load() класу LinkTableTest
Додавання подій (6)
7. Запустіть тестову сторінку LinkTableExtTest.aspx та
отримайте результат
Динамічне завантаження користувацьких ЕК
• Створювати методом Page.LoadControl() при
кожному завантаженні сторінки в обробнику її події
Page.Load екземпляр класу користувацького
елемента керування, заздалегідь підготовленого в
файлах *.ascx та *.ascx.cs
• Резервувати за допомогою елемента PlaceHolder
місце розміщення для точного позиціонування на
сторінці користувацького елемента керування
• Обов'язково присвоювати після динамічного
створення значення властивості ID користувацького
елемента керування, особливо, коли створюється
кілька примірників одного і того ж елемента
Перетворення сторінки .aspx в
користувацький елемент керування .asсx
• Розробити звичайну сторінку, налаштувати її та
перевірити у дії
• Перейменувати розширення файлу з .aspx у .ascx
• Директиву @Page разом з її атрибутами слід
видалити і замінити директивою @Control
<%@ Control language="c#" ... %>
• Видалити з коду усі дескриптори <html>, <body>,
<form>, <head>
• У коді файлу замінити базовий клас сторінки
System.Web.UI.Page на
System.Web.UI.UserControl
• Якщо використовується модель сумісного коду, то
потрібно в директиву @Control обов'язково додати
атрибут ClassName="ім’я_файла_або_будь-
яке_ім’я"
Портальні каркаси
Items[i] Text Value
Items[1] Верхній колонтитул HeaderTest.ascx
Items[2] Кнопка «дата-час» TimeDisplayTest.ascx
Items[3] Список гіперпосилань LinkTableTest.ascx
Items[4] Контрольований список гіперпосилань LinkTableExtTest.ascx
Декларативні налаштування об’єктів DropDownList
Портальні каркаси (2)
Література
• Мэтью Мак-Дональд, Марио Шпушта.
Microsoft ASP.NET 3.5 с примерами
на C# 2008 и Silverlight 2 для
профес-сионалов.: Пер. с англ. – М.:
ООО "И.Д. Вильямс", 2009. – 1408 с.
• Рихтер Дж. CLR via C#. Программиро-
вание на платформе Microsoft .NET
Framework 4.0 на языке C#. 3-е изд. –
СПб.: Питер, 2012. – 928 с.
• Корисні ресурси
– http://msdn.microsoft.com/ru-ru/library/
– http://www.intuit.ru/studies/courses/
591/447/lecture/9960
Дякую за увагу

More Related Content

Similar to Lec11 користувацькi елементи керування

Aspnet core
Aspnet coreAspnet core
Aspnet coreeleksdev
 
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...Igor Bronovskyy
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. ProcessesAndrii Hladkyi
 
Розробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиРозробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиОлексій Артеменко
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CMaksym Davydov
 
WordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting themeWordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting themeTrilipuT
 
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMIЗагальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMIПупена Александр
 
ASP.Net Core Services
ASP.Net Core ServicesASP.Net Core Services
ASP.Net Core ServicesVictor Haydin
 
Docsvision Кирильчук Сергій
Docsvision Кирильчук СергійDocsvision Кирильчук Сергій
Docsvision Кирильчук СергійDokymentoznavstvo111
 
System programing module 2
System programing module 2System programing module 2
System programing module 2Andrii Hladkyi
 
ASP.NET Core лекція 02.pptx
ASP.NET Core лекція 02.pptxASP.NET Core лекція 02.pptx
ASP.NET Core лекція 02.pptxIhor34
 
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...Василь Тереховський
 
Борис Могила "Isomorphic React apps in production"
Борис Могила "Isomorphic React apps in production"Борис Могила "Isomorphic React apps in production"
Борис Могила "Isomorphic React apps in production"Fwdays
 
11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...
11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...
11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...StAlKeRoV
 

Similar to Lec11 користувацькi елементи керування (20)

Aspnet core
Aspnet coreAspnet core
Aspnet core
 
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...07 -  vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
07 - vysnovky z tdd, pohliad pochatkivtsia - vitalii zinchenko it event 2013...
 
System programing module 1. Processes
System programing module 1. ProcessesSystem programing module 1. Processes
System programing module 1. Processes
 
Design patterns part 1
Design patterns part 1Design patterns part 1
Design patterns part 1
 
Розробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапиРозробка веб-сайту. Основні етапи
Розробка веб-сайту. Основні етапи
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-C
 
WordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting themeWordPress meetup Kyiv - Starting theme
WordPress meetup Kyiv - Starting theme
 
Wcf module 3.3
Wcf module 3.3Wcf module 3.3
Wcf module 3.3
 
вашенюк
вашенюквашенюк
вашенюк
 
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMIЗагальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
 
ASP.Net Core Services
ASP.Net Core ServicesASP.Net Core Services
ASP.Net Core Services
 
Docsvision Кирильчук Сергій
Docsvision Кирильчук СергійDocsvision Кирильчук Сергій
Docsvision Кирильчук Сергій
 
NodeJS.pptx
NodeJS.pptxNodeJS.pptx
NodeJS.pptx
 
DAL
DALDAL
DAL
 
System programing module 2
System programing module 2System programing module 2
System programing module 2
 
Wcf module 2
Wcf module 2Wcf module 2
Wcf module 2
 
ASP.NET Core лекція 02.pptx
ASP.NET Core лекція 02.pptxASP.NET Core лекція 02.pptx
ASP.NET Core лекція 02.pptx
 
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
Урок 26. Елементи керування “кнопка”. Поняття об’єкту та його властивостей і ...
 
Борис Могила "Isomorphic React apps in production"
Борис Могила "Isomorphic React apps in production"Борис Могила "Isomorphic React apps in production"
Борис Могила "Isomorphic React apps in production"
 
11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...
11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...
11 клас 30 урок. Інтергроване використання засобів опрацювання електронних до...
 

More from cit-cit

лекція 5
лекція 5лекція 5
лекція 5cit-cit
 
лаборатор. 10
лаборатор. 10лаборатор. 10
лаборатор. 10cit-cit
 
лекція 19
лекція 19лекція 19
лекція 19cit-cit
 
лекція 18
лекція 18лекція 18
лекція 18cit-cit
 
лекція 17
лекція 17лекція 17
лекція 17cit-cit
 
лекція 16
лекція 16лекція 16
лекція 16cit-cit
 
лекція 12
лекція 12лекція 12
лекція 12cit-cit
 
лекція 11
лекція 11лекція 11
лекція 11cit-cit
 
лекція 10
лекція 10лекція 10
лекція 10cit-cit
 
лаборатор. 15
лаборатор. 15лаборатор. 15
лаборатор. 15cit-cit
 
лаборатор. 14
лаборатор. 14лаборатор. 14
лаборатор. 14cit-cit
 
лаборатор. 13
лаборатор. 13лаборатор. 13
лаборатор. 13cit-cit
 
лаборатор. 12
лаборатор. 12лаборатор. 12
лаборатор. 12cit-cit
 
лаборатор. 11
лаборатор. 11лаборатор. 11
лаборатор. 11cit-cit
 
лаборатор. 9
лаборатор. 9лаборатор. 9
лаборатор. 9cit-cit
 
лаборатор. 8
лаборатор. 8лаборатор. 8
лаборатор. 8cit-cit
 
лаборатор. 7
лаборатор. 7лаборатор. 7
лаборатор. 7cit-cit
 
лекція 15 (pdf.io)
лекція 15 (pdf.io)лекція 15 (pdf.io)
лекція 15 (pdf.io)cit-cit
 
лекція 14 (pdf.io)
лекція 14 (pdf.io)лекція 14 (pdf.io)
лекція 14 (pdf.io)cit-cit
 
лекція 13 (pdf.io)
лекція 13 (pdf.io)лекція 13 (pdf.io)
лекція 13 (pdf.io)cit-cit
 

More from cit-cit (20)

лекція 5
лекція 5лекція 5
лекція 5
 
лаборатор. 10
лаборатор. 10лаборатор. 10
лаборатор. 10
 
лекція 19
лекція 19лекція 19
лекція 19
 
лекція 18
лекція 18лекція 18
лекція 18
 
лекція 17
лекція 17лекція 17
лекція 17
 
лекція 16
лекція 16лекція 16
лекція 16
 
лекція 12
лекція 12лекція 12
лекція 12
 
лекція 11
лекція 11лекція 11
лекція 11
 
лекція 10
лекція 10лекція 10
лекція 10
 
лаборатор. 15
лаборатор. 15лаборатор. 15
лаборатор. 15
 
лаборатор. 14
лаборатор. 14лаборатор. 14
лаборатор. 14
 
лаборатор. 13
лаборатор. 13лаборатор. 13
лаборатор. 13
 
лаборатор. 12
лаборатор. 12лаборатор. 12
лаборатор. 12
 
лаборатор. 11
лаборатор. 11лаборатор. 11
лаборатор. 11
 
лаборатор. 9
лаборатор. 9лаборатор. 9
лаборатор. 9
 
лаборатор. 8
лаборатор. 8лаборатор. 8
лаборатор. 8
 
лаборатор. 7
лаборатор. 7лаборатор. 7
лаборатор. 7
 
лекція 15 (pdf.io)
лекція 15 (pdf.io)лекція 15 (pdf.io)
лекція 15 (pdf.io)
 
лекція 14 (pdf.io)
лекція 14 (pdf.io)лекція 14 (pdf.io)
лекція 14 (pdf.io)
 
лекція 13 (pdf.io)
лекція 13 (pdf.io)лекція 13 (pdf.io)
лекція 13 (pdf.io)
 

Lec11 користувацькi елементи керування

  • 1. Крос-платформне програмування Лекція 11 Користувацькі елементи керування 30 травня, 2014 Примітка: частину слайдів лекції підготовлено за матеріалами курсу В.Снєткова http://www.intuit.ru/studies/courses/591/447/lecture/9960
  • 2. Види власних елементів керування • Користувацький ЕК (user control, UC) – невелика частина сторінки, яка може містити статичний HTML-код і серверні елементи керування Web – Можуть багаторазово використовуватися на безлічі сторінок одного і того ж Web-застосування – Підтримують створення своїх властивостей, подій та методів • Спеціалізовані серверні ЕК (server custom control, SCC) – скомпільовані класи, які програмним чином генерують свій власний HTML-код – Завжди попередньо компілюються у DLL-бібліотеки збірок
  • 3. Особливості користувацьких елементів керування • починаються з директиви @Control, а не @Page • файл користувацького ЕК не є окремою сторінкою, тому не повинен містити дескриптори <html>, <head>, <body>, <form> • розширення користуваць- ких ЕК – .ascx, а не .aspx • об’єкт сторінки походить від класу Page, а об’єкт користувацького ЕК – від класу UserControl • файли прихованого коду є нащадками класу System.Web.UI.UserControl • не можуть бути запитані самим клієнтом, а, навпаки, впроваджуються в інші Web-сторінки
  • 4. Створення користувацького елементу керування Алгоритм: 1. «Add new Item» - «Web User Control» 2. Наповнення користувацького елементу 3. Перетягування користувацького елементу у потрібні форми
  • 5. Додавання користувацького елементу керування на стрінку Алгоритм: 1. «Add new Item» - «Web User Control» 2. Наповнення користувацького елементу 3. Перетягування користувацького елементу у потрібні форми
  • 6. Обробка подій • Стандартний ЕК LinkButton знімає з таймера севера та відображає клієнту поточний час
  • 7. Додавання властивостей • Тестова сторінка Default2.aspx містить два елемента керування
  • 8. Порядок генерації подій ініціалізації • Виконується віддалений запит сторінки і вона заванта- жується у пам'ять сервера • Конструктором класу створюється та ініціалізується користувацький ЕК • Присвоюються значення атрибутів, передбачені в дескрипторі користувацького ЕК • Створюється об'єкт батьківської сторінки • Виконується подія Page.Load батьківської сторінки, в обробнику Page_Load() якої можна передбачити пере- призначення атрибутів, властивостей користувацького ЕК • Виконується подія Page.Load користувацького ЕК
  • 9. Використання спеціальних об’єктів 1. Створити веб-форму з розділеним кодом та ім'ям LinkTableTest.aspx 2. Зробити цю сторінку стартовою 3. Додати до проекту нову папку з ім'ям App_Code 1 3 2
  • 10. Використання спеціальних об’єктів (2) 4. До папки App_Code додати новий клас C# з ім'ям LinkTableItem.cs, що містить наступний код
  • 11. Використання спеціальних об’єктів (3) 5. Створити користувацький елемент керування з розділеним кодом та ім'ям LinkTable
  • 12. Використання спеціальних об’єктів (4) 6. Файл LinkTable.ascx.cs заповнити наступним кодом 7. Розмістити користувацький елемента керування на тестовій сторінці LinkTableTest.aspx
  • 13. Використання спеціальних об’єктів (5) 8. Налаштувати файл LinkTableTest.aspx.cs
  • 14. Делегати • Делегат - об'єкт, який може посилатися на метод – Дозволяє динамічно викликати метод, на який він посилається, під час виконання • Об'єкт делегата підтримує три фрагмента інформації – адресу методу, на якому він викликається – аргументи (якщо вони є) цього методу – значення, що повертається (якщо воно є), цього методу delegate тип_що_повертається ім’я (список_параметрів); – тип_що_повертається - тип значення, що повертається методами, які будуть викликатися делегатом – ім’я - конкретне ім'я делегата – список_параметрів - параметри, необхідні для методів, що викликаються делегатом
  • 15. Приклад: застосування методів екземпляра в якості делегатів • Метод, що викликається, може бути методом екземпляра, пов'язаним з об'єктом, або статичним методом, пов'язаним з конкретним класом • Тип і сигнатура метода, що повертається, повинні співпадати з тими, які вказані в оголошенні делегата • Коли відбувається звер- нення до екземпляра делегата IntOperation, викликається метод, на який він посилається
  • 16. Приклад: групова адресація • Групова адресація – можли- вість створити список або ланцюжок викликів для методів, які викликаються автоматично при зверненні до делегата • Для цього достатньо отримати екземпляр делегата, а потім додати методи в ланцюжок за допомогою оператора + або += • Для видалення методу служить оператор - або -=
  • 17. Подія • Подія - автоматичне повідомлення про те, що відбулася деяка дія – об'єкт, що виявляє інтерес до події, реєструє обробник цієї події – коли подія відбувається, викликаються всі зареєстро- вані обробники цієї події – обробники подій зазвичай представлені делегатами – події підтримують групову адресацію, що дозволяє декільком об'єктам реагувати на повідомлення про подію • Оголошення події event делегат_події ім’я_події; – делегат_події - ім'я делегата, використовуваного для підтримки події – ім’я_події - конкретний об'єкт оголошеної події
  • 18. Обробка подій у середовищі .NET Framework • Об'єкт надає свої методи-обробники для реагування на виникнення події. Говорять, що об'єкт підписався на деяку подію • Оголошення обробника подій void обробник(object відправник, EventArgs е) { ... } – відправник - посилання на об'єкт, що формує подію – е - параметр типу EventArgs, що містить додаткову інформацію про подію, яка потрібна обробнику • Клас EventArgs не містить поля, які можна використати для передачі обробнику додаткових даних, він служить базовим класом, від якого отримують похідний клас, що містить всі необхідні поля
  • 19. Додавання подій 1. Змінити тип елемента в шаблоні <ItemTemplate> дескрипторного подання файла LinkTableExt.ascx на нове ім'я атрибута CommandArgument
  • 20. Додавання подій (2) 2. Оголосити клас LinkTableEventArgs для упаковки переданої в подію інформації та делегата події в глобальній області видимості у файлі LinkTableExt.ascx.cs підтримки користувацького ЕК
  • 21. Додавання подій (3) 3. У файлі LinkTableExt.ascx у режимі Design створити обробник для події ItemCommand для користувацького ЕК
  • 22. Додавання подій (4) 4. У режимі Design тестової сторінки розмістіть елемент Label з вкладки Standard, задайте йому ім'я lblInfo 5. У файлі LinkTableExtTest.aspx.cs заповніть обробник LinkClicked наступним кодом
  • 23. Додавання подій (5) 6. Підключити обробник можна двома способами: •додати ім’я згенерованого обробника в атрибут OnLinkClicked дескриптора <uc1:LinkTable> файлу тестової сторінки LinkTableExtTest.aspx •підключити обробник за допомогою коду делегата у файлі LinkTableExtTest.aspx.cs в кінці обробника події Page_Load() класу LinkTableTest
  • 24. Додавання подій (6) 7. Запустіть тестову сторінку LinkTableExtTest.aspx та отримайте результат
  • 25. Динамічне завантаження користувацьких ЕК • Створювати методом Page.LoadControl() при кожному завантаженні сторінки в обробнику її події Page.Load екземпляр класу користувацького елемента керування, заздалегідь підготовленого в файлах *.ascx та *.ascx.cs • Резервувати за допомогою елемента PlaceHolder місце розміщення для точного позиціонування на сторінці користувацького елемента керування • Обов'язково присвоювати після динамічного створення значення властивості ID користувацького елемента керування, особливо, коли створюється кілька примірників одного і того ж елемента
  • 26. Перетворення сторінки .aspx в користувацький елемент керування .asсx • Розробити звичайну сторінку, налаштувати її та перевірити у дії • Перейменувати розширення файлу з .aspx у .ascx • Директиву @Page разом з її атрибутами слід видалити і замінити директивою @Control <%@ Control language="c#" ... %> • Видалити з коду усі дескриптори <html>, <body>, <form>, <head> • У коді файлу замінити базовий клас сторінки System.Web.UI.Page на System.Web.UI.UserControl • Якщо використовується модель сумісного коду, то потрібно в директиву @Control обов'язково додати атрибут ClassName="ім’я_файла_або_будь- яке_ім’я"
  • 27. Портальні каркаси Items[i] Text Value Items[1] Верхній колонтитул HeaderTest.ascx Items[2] Кнопка «дата-час» TimeDisplayTest.ascx Items[3] Список гіперпосилань LinkTableTest.ascx Items[4] Контрольований список гіперпосилань LinkTableExtTest.ascx Декларативні налаштування об’єктів DropDownList
  • 29. Література • Мэтью Мак-Дональд, Марио Шпушта. Microsoft ASP.NET 3.5 с примерами на C# 2008 и Silverlight 2 для профес-сионалов.: Пер. с англ. – М.: ООО "И.Д. Вильямс", 2009. – 1408 с. • Рихтер Дж. CLR via C#. Программиро- вание на платформе Microsoft .NET Framework 4.0 на языке C#. 3-е изд. – СПб.: Питер, 2012. – 928 с. • Корисні ресурси – http://msdn.microsoft.com/ru-ru/library/ – http://www.intuit.ru/studies/courses/ 591/447/lecture/9960

Editor's Notes

  1. Подія – вбудований механізм C#, за допомогою якого автоматично забезпечується повідомлення зареєстрованих об&amp;apos;єктів щодо необхідності виконання ними певних дій Об&amp;apos;єкт надає свої методи-обробники для реагування на виникнення події. Говорять, що об&amp;apos;єкт підписався на деяку подію Делегати представляються спеціальним класом, який визначає сигнатуру, переданої з подією інформації сторони-відправника, і сигнатуру обробників події сторони-приймача За допомогою конструктора делегата при створенні його нового екземпляра в подію додається посилання на обробник і встановлюється контроль за сигнатурою цього обробника. Цей процес називається реєстрацією події у класі або підпискою на подію Події підтримують багатодресатну передачу (multicasting) – одна й та ж подія може приймати багато об&amp;apos;єктів, але обробляти цю подію кожен об&amp;apos;єкт буде своїм методом, який він вказав у конструкторі делегата при підписці на цю подію