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

Visual Studio 2010

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    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 />"));
     } 
    }
    
    
    
Показ: