|
https://technet.microsoft.com/en-us/library/ms143221(v=sql.105).aspx |
Серверные элементы управления (продолжение)
Вначале — маленькая "хитрость". Хороший web-разработчик должен знать, как выглядят его страницы в разных браузерах. По умолчанию обычно они открываются в Internet Explorer. Щелкните правой кнопкой мыши на файле и выберите Browse with. Там можно сменить браузер по умолчанию или выбрать любой из списка для данного просмотра.
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.
Image
Элемент управления asp:image соответствует тегу img языка HTML. Его можно использовать для динамического добавления на страницу новых изображений. Вернемся к нашему туристическому агентству. Мы решили, что, когда клиент выбирает города, на страницу автоматически должна выводиться карта соответствующего города. Оставляем это в качестве упражнения. Карты городов можно найти через поисковую систему Яндекс.
< asp:Image > имеет свойства AlternateText, ImageUrl, ImageAlign
| AlternateText | Соответствует атрибуту ALT тега IMG. Отображается, если показ картинок отключен или картинки невозможно найти |
| ImageUrl | Соответствует атрибуту SRC тега IMG |
| ImageAlign | Соответствует атрибуту ALIGN тега IMG |
Как всегда, свойства можно менять из программы. Например, меняя значение ImageUrl, можно организовать просмотр множества картинок в виде слайд-шоу. Создайте директорию images и поместите в нее несколько картинок image1, image2 и так далее.
Напишем новую страницу:
<%@ Page Language="C#" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<script language="C#" runat="server">
public static int count=1;
void NextImage(Object sender, EventArgs e)
{
count++;
if(count==10) count=1; //циклический просмотр
Image1.ImageUrl ="images/image"+count+".jpg";
}
</script>
</head>
<body>
<form runat="server">
<h3>Image Example</h3>
<asp:Image id="Image1" runat="server"
ImageAlign="top"
AlternateText="Картинки нет"
height="300"
ImageUrl="images/image1.jpg"/>
<hr>
<br><br>
<asp:Button id="Next"
Text="Next"
OnClick="NextImage"
runat="server"/>
<br><br>
</form>
</body>
</html>
