Преподаватель
Чмиль Е.В. - РЗКСА
Лекция №6 Тема: «Серверные элементы управления. Часть 1»
Button
Button — это командная кнопка, нажатие на которую часто приводит к отправке данных на сервер. Можно создавать кнопки двух типов: для передачи данных формы (submit button) или командные кнопки для выполнения различных функций, связанных с данной кнопкой. Если на форме есть несколько кнопок, свойство CommandName позволяет узнать, какая именно кнопка была нажата.
ASP .NET поддерживает 3 вида событий.
События, которые происходят в браузере клиента и обрабатываются кодом на Javascript.
События загрузки страницы.
События элементов управления.
Например, чтобы обработать щелчок на кнопке, мы переопределяем событие Click.
protected void Button1_Click(object sender, EventArgs e)
{
}
События можно определить через вкладку событий в окне свойств. Второй аргумент всех обработчиков событий имеет тип EventArgs или какой-либо унаследованный от него.
Например, мы хотим создать форму для заполнения резюме. Автор может иметь заранее неизвестное нам количество предыдущих мест работы. Добавим на форму кнопку, при нажатии на которую в форму добавляется один элемент ввода текста:
<%@ Page Language="C#"%>
<script runat="server">
static int num=0;
static TextBox[] tb=new TextBox[10];
void AddExperience(Object sender, EventArgs e)
{
if (num < 10)
// Чтобы не возникало ошибки обращения к несуществующему элементу массива
{
TextBox newBox = new TextBox();
newBox.ID = "box" + num;
tb[num] = newBox;
num++;
}
for (int i=0; i<10; i++)
// Добавление на форму контролов из
массива.
{
if (tb[i] != null)
{
places.Controls.Add(tb[i]);
Label lb=new Label();
lb.Text="<br><br>";
places.Controls.Add(lb);
}
else break;
}}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
</head>
<body>
<form runat="server" id="Experience">
<asp:Label ID="Label1" runat="server" text="Введите Ваше
последнее место работы" />
<asp:Panel id="places" runat="server">
<asp:TextBox id="first" runat="server" />
<br />
<br />
</asp:Panel>
<asp:Button id="Add" Text="Еще" OnCommand="AddExperience"
CommandName="Add" runat="server" />
</form>
</body>
</html>
Здесь мы имеем массив из 10 элементов типа TextBox. Новый элемент создается в момент нажатия на кнопку "Еще". Можно добавить до 10 новых элементов. Как и раньше, они размещаются в контейнере, это нужно, чтобы они выводились до кнопки.
При помощи свойства OnClientClick можно задать клиентский сценарий на JavaScript. Его значением может быть встроенная функция языка JavaScript, или функция, описанная в теле страницы. Клиентский код выполняется до серверного кода, заданного в свойстве OnClick.
Label
Этот элемент управления позволяет выводить отформатированный текст. Всеми свойствами этого объекта можно управлять из вашей программы ASP .NET.
Пример описания элемента Label:
<asp:Label id="ShopNews" runat="server" Font-Size =20
ForeColor="red"
BackColor ="lightgray" BorderWidth=4 BorderStyle=groove Height=50
width=500>
Новости торговой площадки </asp:Label>
Префикс asp: означает, что данный элемент стандартный.
Так как Text — это такой же атрибут, как и другие, мы можем написать иначе:
<asp:Label id="ShopNews" runat="server" Font-Size =20
ForeColor="red"
BackColor ="lightgray" BorderWidth=4 BorderStyle=groove Height=50
width=500
Text= "Новости торговой площадки" />
Рассмотрим небольшой пример, который переопределяет текст, отображаемый при помощи элемента Label, на текст, набранный пользователем в элемент TextBox. Для этого реализуем следующую страницу:
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="OnClick"/>
</div>
</form>
</body>
Как видно, изначально компонент Label1 отображает текст Label. Реализуем обработчик события OnClick кнопки так, чтобы она отображала в Label набранный пользователем текст:
protected void OnClick(object sender, EventArgs e)
{
Label1.Text = TextBox1.Text;
} (ПРИМЕНИТЬ НА ПРАКТИКЕ №3)