Поделиться через


Практическое руководство. Добавление элементов управления на веб-страницу ASP.NET программными средствами

Обновлен: Ноябрь 2007

В некоторых случаях более целесообразно создавать элемент управления во время выполнения, а не во время разработки. Например, представьте страницу с результатами поиска, на которой необходимо отразить результаты в виде таблицы. Так как неизвестно, сколько элементов потребуется отобразить, необходимо динамическое создание одной строки таблицы для каждого отображаемого элемента.

kyt0fzt1.alert_note(ru-ru,VS.90).gifПримечание.

Существующие элементы управления часто обеспечивают функциональность, аналогичную динамическому созданию элементов управления. Например, такие элементы управления как Repeater, DataList и RadioButtonList могут динамически создавать строки или другие элементы во время запуска страницы.

Для программного добавления элемента управления на страницу на ней должен быть контейнер для нового элемента управления. Например, при создании строк таблицы сама таблица является контейнером. При отсутствии очевидного элемента управления, который мог бы быть использован в качестве контейнера, можно использовать серверные веб-элементы управления PlaceHolder или Panel.

В некоторых случаях может понадобиться одновременное создание статического текста и элементов управления. Для создания статического текста можно использовать серверные веб-элементы управления Literal или Label. Эти элементы управления могут быть добавлены в контейнер, как и любые другие. Дополнительные сведения о состоянии просмотра элементов управления, созданных во время выполнения, см. в разделе Динамические серверные веб-элементы управления и состояние просмотра.

kyt0fzt1.alert_caution(ru-ru,VS.90).gifВажное примечание.

Добавление элемента управления на веб-страницу ASP.NET программными средствами

  1. Создайте экземпляр элемента управления и задайте его свойства, как показано в следующем примере:

    Dim myLabel As New Label()
    myLabel.Text = "Sample Label"
    
    Label myLabel = new Label();
    myLabel.Text = "Sample Label";
    
    kyt0fzt1.alert_note(ru-ru,VS.90).gifПримечание.

    Элементы управления обычно добавляются на страницу на стадии инициализации страницы. Дополнительные сведения о стадиях жизненного цикла страницы см. в разделе Общие сведения о жизненном цикле веб-страниц ASP.NET.

  2. Добавьте новый элемент управления к коллекции Controls контейнера, который уже находится на странице, как показано в следующем примере:

    Dim Panel1 As New Panel()
    Panel1.Controls.Add(myLabel)
    
    Panel Panel1= new Panel();
    Panel1.Controls.Add(myLabel);
    
    kyt0fzt1.alert_note(ru-ru,VS.90).gifПримечание.

    Так как свойство Controls является коллекцией, можно использовать метод AddAt для размещения нового элемента управления в определенном месте — например, впереди других элементов управления. Однако это может привести к ошибкам на странице. Дополнительные сведения см. в разделе Динамические серверные веб-элементы управления и состояние просмотра.

    В следующем примере кода показан обработчик событий SelectedIndexChanged элемента управления с именем DropDownList1. Обработчик создает выбранное пользователем в раскрывающемся списке количество элементов управления «Метка». Контейнером для элементов управления является серверный веб-элемент управления PlaceHolder с именем Placeholder1.

    kyt0fzt1.alert_security(ru-ru,VS.90).gifПримечание о безопасности.

    Данные, вводимые пользователем на веб-странице, могут содержать потенциально небезопасный клиентский сценарий. По умолчанию веб-страницы 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