Программное создание серверных элементов управления

Иногда невозможно знать наперед, сколько текстовых полей, переключателей, строк таблиц или других элементов управления потребуется, поскольку это может зависеть от других факторов вроде количества записей, хранимых в базе данных, или пользовательского ввода. ASP.NET предлагает решение этой проблемы — вы можете просто создать экземпляры необходимых серверных элементов управления HTML, установить их свойства с помощью объектно-ориентированного подхода, использованного в предыдущем примере, а затем добавить их в коллекцию Controls страницы. Этот метод был представлен в предыдущей главе и действует одинаково по отношению к серверным элементам управления HTML и Web.

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

protected void Page_Load(object sender, System.EventArgs e)
{
  // Создание нового объекта HtmlTable.
  HtmlTable table1 = new HtmlTable();
  // Установка свойств таблицы, связанных с форматированием.
  table1.Border = 1;
  table1.CellPadding = 3;
  table1.CellSpacing = 3;
  table1.BorderColor = "red";
  // Начало добавления содержимого к таблице.
  HtmlTableRow row;
  HtmlTableCell cell;
  for (int i=1; i<=5; i++)
  {
    // Создание новой строки и установка для нее цвета фона.
    row = new HtmlTableRow();
    row.BgColor = (i%2==0 ? "lightyellow" : "lightcyan");
    for (int j=1; j<=4; j++)
    {
      // Создание ячейки и установка ее текста.
      cell = new HtmlTableCell();
      cell.InnerHtml = "Row: " + i.ToString() +
        "<br />Cell: " + j.ToString();
      // Добавление ячейки к текущей строке.
      row.Cells.Add(cell);
    }
    // Добавление строки к таблице.
    table1.Rows.Add(row);
  }
  // Добавление таблицы к странице.
  this.Controls.Add(table1);
}

предыдущая    следующая страница   оглавление

156

Hosted by uCoz