Практическое руководство. Добавление элементов управления на веб-страницу ASP.NET программными средствами
Обновлен: Ноябрь 2007
В некоторых случаях более целесообразно создавать элемент управления во время выполнения, а не во время разработки. Например, представьте страницу с результатами поиска, на которой необходимо отразить результаты в виде таблицы. Так как неизвестно, сколько элементов потребуется отобразить, необходимо динамическое создание одной строки таблицы для каждого отображаемого элемента.
![]() |
---|
Существующие элементы управления часто обеспечивают функциональность, аналогичную динамическому созданию элементов управления. Например, такие элементы управления как Repeater, DataList и RadioButtonList могут динамически создавать строки или другие элементы во время запуска страницы. |
Для программного добавления элемента управления на страницу на ней должен быть контейнер для нового элемента управления. Например, при создании строк таблицы сама таблица является контейнером. При отсутствии очевидного элемента управления, который мог бы быть использован в качестве контейнера, можно использовать серверные веб-элементы управления PlaceHolder или Panel.
В некоторых случаях может понадобиться одновременное создание статического текста и элементов управления. Для создания статического текста можно использовать серверные веб-элементы управления Literal или Label. Эти элементы управления могут быть добавлены в контейнер, как и любые другие. Дополнительные сведения о состоянии просмотра элементов управления, созданных во время выполнения, см. в разделе Динамические серверные веб-элементы управления и состояние просмотра.
![]() |
---|
Добавление элемента управления на веб-страницу ASP.NET программными средствами
Создайте экземпляр элемента управления и задайте его свойства, как показано в следующем примере:
Dim myLabel As New Label() myLabel.Text = "Sample Label"
Label myLabel = new Label(); myLabel.Text = "Sample Label";
Примечание.
Элементы управления обычно добавляются на страницу на стадии инициализации страницы. Дополнительные сведения о стадиях жизненного цикла страницы см. в разделе Общие сведения о жизненном цикле веб-страниц ASP.NET.
Добавьте новый элемент управления к коллекции Controls контейнера, который уже находится на странице, как показано в следующем примере:
Dim Panel1 As New Panel() Panel1.Controls.Add(myLabel)
Panel Panel1= new Panel(); Panel1.Controls.Add(myLabel);
Примечание.
Так как свойство Controls является коллекцией, можно использовать метод AddAt для размещения нового элемента управления в определенном месте — например, впереди других элементов управления. Однако это может привести к ошибкам на странице. Дополнительные сведения см. в разделе Динамические серверные веб-элементы управления и состояние просмотра.
В следующем примере кода показан обработчик событий SelectedIndexChanged элемента управления с именем DropDownList1. Обработчик создает выбранное пользователем в раскрывающемся списке количество элементов управления «Метка». Контейнером для элементов управления является серверный веб-элемент управления PlaceHolder с именем Placeholder1.
Примечание о безопасности.
Данные, вводимые пользователем на веб-странице, могут содержать потенциально небезопасный клиентский сценарий. По умолчанию веб-страницы ASP.NET проверяют введенные пользователем данные на наличие сценариев и HTML-элементов. Дополнительные сведения см. в разделе Общие сведения об использовании сценариев.
Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged Dim DropDownList1 As New DropDownList() Dim PlaceHolder1 As New PlaceHolder() Dim i As Integer Dim numlabels As Integer ' Get the number of labels to create. numlabels = CInt(DropDownList1.SelectedItem.Text) For i = 1 To numlabels Dim myLabel As Label = New Label() ' Set the label's Text and ID properties. myLabel.Text = "Label " & i myLabel.ID = "Label" & i PlaceHolder1.Controls.Add(myLabel) ' Add a spacer in the form of an HTML <br /> element Dim spacer As LiteralControl = New LiteralControl("<br />") PlaceHolder1.Controls.Add(spacer) Next End Sub
private void DropDownList1_SelectedIndexChanged(object sender, System.EventArgs e) { DropDownList DropDownList1 = new DropDownList(); PlaceHolder PlaceHolder1 = new PlaceHolder(); // Get the number of labels to create. int numlabels = System.Convert.ToInt32(DropDownList1.SelectedItem.Text); for (int i=1; i<=numlabels; i++) { Label myLabel = new Label(); // Set the label's Text and ID properties. myLabel.Text = "Label" + i.ToString(); myLabel.ID = "Label" + i.ToString(); PlaceHolder1.Controls.Add(myLabel); // Add a spacer in the form of an HTML <br /> element. PlaceHolder1.Controls.Add(new LiteralControl("<br />")); } }
См. также
Задачи
Практическое руководство. Определение свойств серверных HTML-элементов управления
Практическое руководство. Программная установка стилей серверных элементов управления ASP.NET
Основные понятия
Модель событий серверного веб-элемента управления ASP.NET
Другие ресурсы
Программное задание свойств серверных элементов управления ASP.NET