Участник:Ahmetova/2.3. Добавление функциональности сайту: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 6:
Файл Default.aspx (его содержимое между тэгами Body) примет вид:
 
''<asp:Content ID="HeaderContent"runat="server"ContentPlaceHolderID="HeadContent"> </asp:Content>''
<asp:Content ID="BodyContent"runat="server"ContentPlaceHolderID="MainContent">
<h2 Социально-экономический факультет /h2>
<p Кафедра экономической информатики и математики /p>
<p>
<asp:Button ID="Button1" runat="server" Text="Button"
OnClick="Button1_Click"
OnInit="Button1_Init"
OnLoad="Button1_Load"
OnPreRender="Button1_PreRender"
OnUnload="Button1_Unload"/>
</p>
<p>
<asp:Label ID="Label1" runat="server" Text="Label" EnableViewState="true"></asp:Label>
</p>
</asp:Content>
 
''<asp:Content ID="BodyContent"runat="server"ContentPlaceHolderID="MainContent">''
Наполним содержанием методы событий. Поставим целью показать не только возможности вывода текста на страницу, но и возможности изменения свойств элементов управления на различных этапах жизненного цикла страницы. Будем исследовать свойство Text элемента управления Label. Для контрола Label сначала установим свойство EnableViewState в true (по умолчанию), а затем в false и проанализируем результаты функционирования кода.
 
'' h2 Социально-экономический факультет /h2''
protected void Button1_Init(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
Label1.Text += "Вызов метода Button1_Init при первой загрузке страницы.<br/>";
}
else
{
Label1.Text += "Вызов метода Button1_Init при повторной загрузке страницы.<br/>";
}
}
protected void Button1_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
Label1.Text += "Вызов метода Button1_Load при первой загрузке страницы.<br/>";
}
else
{
Label1.Text += "Вызов метода Button1_Load при повторной загрузке страницы.<br/>";
}
}
protected void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text += "Вызов метода Button1_Click.<br/>";
}
protected void Button1_PreRender(object sender, EventArgs e)
{
if (!IsPostBack)
{
Label1.Text += "Вызов метода Button1_PreRender при первой загрузке страницы.<br/>";
}
else
{
Label1.Text += "Вызов метода Button1_PreRender при повторной загрузке страницы.<br/>";
}
}
protected void Button1_Unload(object sender, EventArgs e)
{
Label1.Text += "Этого Вам не видать никогда:<br/>";
Label1.Text += "Вызов метода Button1_Unload - страница загружена, изменить ничего нельзя.<br/>";
}
 
'' p Кафедра экономической информатики и математики /p''
Свойство страницы IsPostBack равно false только при первом вызове страницы.
 
'' <p>''
Выполним решение (F5).
 
'' <asp:Button ID="Button1" runat="server" Text="Button"''
Из анализа функционирования данного кода видно:
 
'' OnClick="Button1_Click" ''
* Событие PreInit фиксирует этап начала персонализации и формирования страницы в целом. У дочерних элементов это событие не возникает. В обработчике Page_PreInit можно устанавливать шаблоны и темы оформления, изменять свойства элементов. При повторном вызове страницы обработчик данного события также вызывается, но его действие не изменит свойства элементов, у которых установлено свойство EnabledViewState в true.
 
'' OnInit="Button1_Init" ''
* Событие Init - начало рекурсивной инициализации содержания дочерних элементов страницы. Событие Init дочерних элементов вызывается ранее события Init страницы. Для событий Init дочерних элементов могут быть созданы собственные обработчики события (например, Button1_Init). В Page_Init возможно считывать и инициализировать свойства всех дочерних элементов. При повторном вызове страницы обработчики данного события также вызывается, но их действие, как и в PreInit, не изменит свойства элементов, у которых установлено свойство EnabledViewState в true.
 
'' OnLoad="Button1_Load" ''
* Событие Load возникает как для страницы, так и для дочерних элементов. События дочерних элементов возникают позже чем событие загрузки страницы (в отличии от событий Init). На этом этапе доступны все свойства элементов управления, не зависимо от свойства EnableViewState.
 
'' OnPreRender="Button1_PreRender" ''
* Событие PreRender возникает тогда, когда начинается проверка создания всех элементов страницы. Это последняя возможность внести изменения в свойства страницы и ее элементов.
 
'' OnUnload="Button1_Unload"/>''
 
''</p>''
 
''<p>''
 
<asp:Label ID="Label1" runat="server" Text="Label" EnableViewState="true"></asp:Label>
 
</p>
 
</asp:Content>
 
В файле Default.aspx.cs пропишем методы:
 
''protected void Button1_Init(object sender, System.EventArgs e)''
 
'' { }''
'' protected void Button1_Load(object sender, System.EventArgs e)''
'' { }''
'' protected void Button1_PreRender(object sender, System.EventArgs e)''
'' { }''
'' protected void Button1_Unload(object sender, System.EventArgs e)''
'' { }''
'' protected void Button1_Click(object sender, System.EventArgs e)''
'' { } ''
 
* Событие Init - начало рекурсивной инициализации содержания дочерних элементов страницы. Событие Init дочерних элементов вызывается ранее события Init страницы. Для событий Init дочерних элементов могут быть созданы собственные обработчики события (например, Button1_Init).
* Событие Load возникает как для страницы, так и для дочерних элементов. События дочерних элементов возникают позже чем событие загрузки страницы (в отличии от событий Init). На этом этапе доступны все свойства элементов управления, не зависимо от свойства EnableViewState.
* Событие PreRender возникает тогда, когда начинается проверка создания всех элементов страницы. Это последняя возможность внести изменения в свойства страницы и ее элементов.
* Событие Unload - начало освобождение занятых ресурсов (закрытие файлов, открытых соединений с базой и т.п.). Свойства страницы на данном этапе недоступны.
Теперь усовершенствуем наш контрол Button, добавив к нему функции: при нажатии на кнопку у нас будет выходить информация о кафедре, а также две дополнительные кнопки со списком преподавателей и групп.
 
Наш файл Default.aspx.cs будет иметь следующий вид:
 
'' protected void Button1_Click(object sender, System.EventArgs e)''
'' {''
'' Label1.Text += "Зав.кафедрой - к.,ф/м.,н., доцент Голицына И.Н.<br/>"; ''
'' Label1.Text += "Лаборант кафедры - Андреева Д.<br/>"; ''
'' Label1.Text += "Тел:236-16-13.<br/>"; ''
'' Button2.Visible = true; ''
'' Button1.Click -= Button1_Click; ''
'' Button1.Click += Button1_Click2; ''
'' Button1.Text = "Список преподавателей"; ''
'' } ''
'' protected void Button1_Click2(object sender, System.EventArgs e) ''
'' { ''
'' Label1.Text += "Афзалова А.Н.<br/>"; ''
'' } ''
'' protected void Button2_Click(object sender, EventArgs e) ''
'' { ''
'' Label1.Text += "15-0610.<br/>"; ''
'' } ''